SourceMod Medic

Diskusijos apie sourceMOD, AMXmodX ir kitų žaidimų tarpinių modifikacijų darbą ir jų kūrimą.
User avatar
arturas
Posts: 68
Joined: 2006-08-14, Monday, 18:00
Location: Vilnius/Kaunas
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

SourceMod Medic

Post by arturas » 2009-08-04, Tuesday, 15:10

Sveiki.
Taigi, rašau aš čia tokį skriptą skirtą dods. Principas yra toks: Support klasė gali užsibindint komandą "sm_heal" ir priėjęs prie komandos draugo gali pagydyti (turi tam tikrą kiekį gydimo paketų ir gali gyditi tik tuos žaidėjus, kurie turi mažiau nei tam tikrą kiekį givybių). Visas pluginas yra parašytas, pratestuotas, veikiantis, išskyrus pagalbą support klasės žaidėjams- support klasės žaidėjai turi matyti žmogų, kuris šaukia mediką, t.y. tik support klasės žaidėjai arba tik komandos nariai turi matyti tam tikrą "Glow", pats glow pas mane taipogi yra aprašytas, tačiau nesugalvoju kaip padaryt kad tą glow matytų tik support savo komandos arba tik sava komanda, gal kas turi kokių idėjų, pavyzdžių, etc.?
Pagarbiai,
Artūras
nepiskit jūs man proto

User avatar
Anti-D
Posts: 143
Joined: 2007-01-15, Monday, 13:38
Location: Vilnius
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: SourceMod Medic

Post by Anti-D » 2009-08-04, Tuesday, 16:58

Būtų įdomu pamatyti plugino source kodą.
Intel Core 2 Duo E8400 3.00GHz / 9 x 333MHz / 6MB L2 (BX80570E8400)
Gigabyte P45/ICHR10 (GA-EP45-DS3L)
Gigabyte 9800GT / G92 / 512MB GDDR3 / 256bit (GV-N98TZL-512H)
Seagate Barracuda 7200.11 500GB / 32MB / 7200rpm / SATAII (ST3500320AS)
4 GB Transcend DDRII / 800MHz / NON ECC / CL5 (2x2GB)

User avatar
arturas
Posts: 68
Joined: 2006-08-14, Monday, 18:00
Location: Vilnius/Kaunas
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: SourceMod Medic

Post by arturas » 2009-08-17, Monday, 14:21

šita.. windowsus kai perinstalliavau, išsaugojau jau kompiliuotą pluginą, o ne source kodą, gerai kad per logus atradau pastebin linką kur buvau patalpinęs, rodos viskas pilnai yra išlikę.
Source Kodas:

Code: Select all

/* Plugin Template generated by Pawn Studio */
 
#include <sourcemod>
#include <sdktools>
#define OUT 0x0002
 
new medicPacks[MAXPLAYERS+1]
 
public Plugin:myinfo =
{
        name = "Support-Medic plugin",
        author = "Artūras Medvedevas",
        description = "Support can use medic kit by pressing second weapon slot button (usually button '2')",
        version = "0.5a",
        url = "www.gameconnect.lt"
}
 
public OnPluginStart()
{
        RegConsoleCmd("sm_heal", UseMedic);
        RegConsoleCmd("voice_medic", NeedMedic);
        //HookEvent("player_use", UseMedic);   
        HookEvent("player_changeclass", ifSupport);     
        HookEvent("player_spawn", ifSupport);   
}
public OnEventShutdown()
{
        //UnhookEvent("player_use", UseMedic);
        UnhookEvent("player_changeclass", ifSupport);
        UnhookEvent("player_spawn", ifSupport);
}
public OnMapStart()
{
        AddFileToDownloadsTable("sound/bandage.mp3");
        PrecacheSound("bandage.mp3", true);
}
 
public Action:ifSupport(Handle:event, const String:name[], bool:dontBroadcast)
{
        new client = GetClientOfUserId(GetEventInt(event, "userid"));
        new class = GetEntProp(client, Prop_Send, "m_iPlayerClass");
        if (class == 2)
        {
                medicPacks[client] = 5;
                PrintToChat(client, "Kaip support klasė, jūs gaunate 5 medicininius paketus, kad galėtumėte pagydyti komandos draugus");
        }
        else medicPacks[client] = 0;
}
public Action:canMove(Handle:timer, any:client)
{
        new target_client = GetClientAimTarget(client, true);
        SetEntityMoveType(client, MOVETYPE_WALK);
        SetEntityMoveType(target_client, MOVETYPE_WALK);
        return Plugin_Continue;
}
public Action:NeedMedic(client,args)
{
        //GetEntityRenderMode()
        SetEntityRenderColor(client, 255, 0, 0, 255);
        SetEntityRenderMode(client, RENDER_GLOW);
        CreateTimer(5.0, unGlow, client, 0);
//      return Plugin_Continue;
}
public Action:unGlow(Handle:timer, any:client)
{
        SetEntityRenderColor(client, 255, 255, 255, 255);
        SetEntityRenderMode(client, RENDER_NORMAL);
        return Plugin_Continue;
}
public Action:UseMedic(client,args)//Handle:event, const String:name[], bool:dontBroadcast)
{
        //new client = GetClientOfUserId(GetEventInt(event, "userid"));
        new class = GetEntProp(client, Prop_Send, "m_iPlayerClass");
        if (class == 2)
        {
                if (IsPlayerAlive(client) && IsClientConnected(client))
                {
                        new target_client = GetClientAimTarget(client, true);
                        if (IsPlayerAlive(target_client) && IsClientConnected(target_client))
                        {
                                if (medicPacks[client] > 0)
                                {
                                        new Float:client_position[3];
                                        new Float:target_client_position[3];
                                        GetEntPropVector(client, Prop_Send, "m_vecOrigin", client_position);
                                        GetEntPropVector(target_client, Prop_Send, "m_vecOrigin", target_client_position);
                                        if (GetClientTeam(target_client) == GetClientTeam(client))
                                        {
                                                if (GetVectorDistance(client_position, target_client_position, false) < 75.0)
                                                {
                                                        new health = GetClientHealth(target_client);
                                                        if (health < 50)
                                                        {       
                                                                new healed = GetRandomInt(20, 50);
                                                                SetEntityHealth(target_client, health+healed);
                                                                medicPacks[client]--;                       
                                                                EmitSoundToClient(client, "bandage.mp3", _, _, _, _, 0.8);
                                                                EmitSoundToClient(target_client, "bandage.mp3", _, _, _, _, 0.8);
                                                                SetEntityMoveType(client, MOVETYPE_NONE);
                                                                SetEntityMoveType(target_client, MOVETYPE_NONE);
                                                                ScreenFade(target_client, 150, 0, 0, 200, 1.5, OUT);
                                                                CreateTimer(1.5, canMove, client, 0);
                                                                LogToGame("\"%L\" triggered \"medic_heal\"", client);
                                                                PrintToChat(client, "Jūs pagydete komandos draugą %d gyvybių.", healed);
                                                                PrintToChat(target_client, "Jus pagydė komandos medikas %d gyvybių.", healed);
                                                                PrintToChat(client, "Jums liko %d gydymo paketai(-ų)", medicPacks[client]);
                                                        }
                                                        else PrintToChat(client, "Komandos draugui pagalbos nereikia, nes dar turi %d gyvybių.", health);
                                                }
                                        }
                                }
                                else PrintToChat(client, "Jūs nebeturite gydymo paketų");
                        }
                        else PrintToChat(client, "Jūs negalite pagydyti žaidėjo, kuris miręs arba ne šiame serveryje");
                }
        }
        else PrintToChat(client, "Jūs turite būti support, kad panaudoti šią komandą");
        return Plugin_Handled;
}
public ScreenFade(client, red, green, blue, alpha, delay, type)
{
        new Handle:msg
        new duration
       
        duration = delay * 1000
       
        msg = StartMessageOne("Fade", client)
        BfWriteShort(msg, 500)
        BfWriteShort(msg, duration)
        BfWriteShort(msg, type)
        BfWriteByte(msg, red)
        BfWriteByte(msg, green)
        BfWriteByte(msg, blue) 
        BfWriteByte(msg, alpha)
        EndMessage()
}


taigi jei turit minčių- išklausysiu, nes nesugalvoju niekaip pats.
nepiskit jūs man proto

User avatar
arturas
Posts: 68
Joined: 2006-08-14, Monday, 18:00
Location: Vilnius/Kaunas
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: SourceMod Medic

Post by arturas » 2009-08-17, Monday, 21:51

okey. sumąsčiau tokį būdą- kai šauki "Medic!" (naudodami komandą voice_medic), tai jūsų iconėlė virš galvos komandos draugams (nu ta tipo kur rodo axis/allies) rodys raudoną kryžių, kad žinotų kam reik pagalbos, ikonėlė laikysis 5-10s (dar tiksliai nežinau kaip bus, testuojant pažėsiu kaip geriausiai). Supportas kaip minėjau turės vaistinėlių ir už gydymą gaus taškų (ne tik statuose planuoju kad pridėtų, bet ir kaip už užimtą flagą užskaitytų scoreborde). kas nori gražią ikonėlę papaišyt? :))
nepiskit jūs man proto

User avatar
gnt
Posts: 147
Joined: 2007-06-11, Monday, 9:38
Location: Vilnius
Contact:

Re: SourceMod Medic

Post by gnt » 2009-08-18, Tuesday, 11:59

Ikonas padariau, galėsiu atsiųsti.

User avatar
arturas
Posts: 68
Joined: 2006-08-14, Monday, 18:00
Location: Vilnius/Kaunas
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: SourceMod Medic

Post by arturas » 2009-08-18, Tuesday, 15:13

tai gali čia prikabinti :)
nepiskit jūs man proto

User avatar
gnt
Posts: 147
Joined: 2007-06-11, Monday, 9:38
Location: Vilnius
Contact:

Re: SourceMod Medic

Post by gnt » 2009-08-18, Tuesday, 16:24

Gerai, ikonos sukompiliuotos. Ikonos atrodo taip:

1. Amerikiečių ikona:
Image

2. Vokiečių ikona:
Image
Attachments
medic_icons.rar
(16.88 KiB) Downloaded 249 times

User avatar
arturas
Posts: 68
Joined: 2006-08-14, Monday, 18:00
Location: Vilnius/Kaunas
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: SourceMod Medic

Post by arturas » 2009-08-18, Tuesday, 16:37

dėkui gnt ;] reiks bandyt programuot reiškias
nepiskit jūs man proto

User avatar
Maserati
Posts: 486
Joined: 2009-04-27, Monday, 1:11
Location: Vilnius
Contact:

Re: SourceMod Medic

Post by Maserati » 2009-08-19, Wednesday, 0:27

gera mintis :) jei pavyks įgyvendinti bus super

User avatar
arturas
Posts: 68
Joined: 2006-08-14, Monday, 18:00
Location: Vilnius/Kaunas
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: SourceMod Medic

Post by arturas » 2009-08-19, Wednesday, 5:49

manau turėtų pavykti, tačiau programavimo darbus pratęsiu tikriausiai tik kitą/dar kitą savaitę
nepiskit jūs man proto

User avatar
Lawas
Posts: 448
Joined: 2006-10-11, Wednesday, 13:40
Location: Visbek
Contact:

Re: SourceMod Medic

Post by Lawas » 2009-08-20, Thursday, 9:29

arturas wrote:manau turėtų pavykti, tačiau programavimo darbus pratęsiu tikriausiai tik kitą/dar kitą savaitę

Laukiam laukiam mes sveteliu laukiam :roll: arturas respect uz triusa lenkiu galva pries tave . 8)

User avatar
arturas
Posts: 68
Joined: 2006-08-14, Monday, 18:00
Location: Vilnius/Kaunas
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: SourceMod Medic

Post by arturas » 2009-08-21, Friday, 19:44

ok.. parašiau pluginą, tik negaliu patikrinti kaip veikia jis pilnai :( gal kas nori man padėt jį pratestuot? reiktų kad kas pakurtų serverį kad su jo savininku galėčiau pratestuoti ( reik servo 2vietų su sourcemod, savo pluginą sukompiliuotą duosiu ir failus reikalingus).
nepiskit jūs man proto

User avatar
Lawas
Posts: 448
Joined: 2006-10-11, Wednesday, 13:40
Location: Visbek
Contact:

Re: SourceMod Medic

Post by Lawas » 2009-08-21, Friday, 19:47

sutikciau bet mano zebriukas ciuju nepajektu net 2 zaideju patempti :D

User avatar
Maserati
Posts: 486
Joined: 2009-04-27, Monday, 1:11
Location: Vilnius
Contact:

Re: SourceMod Medic

Post by Maserati » 2009-08-24, Monday, 0:52

Mano pasiulymas būtų abiem komandom naudoti tokią pačią ikoną - raudoną kryžių baltame fone, nes jis kurkas geriau matytųsi iš toli.
Attachments
american_medic.jpg
american_medic.jpg (20.09 KiB) Viewed 7057 times
Last edited by Maserati on 2009-08-24, Monday, 1:01, edited 1 time in total.
Image

User avatar
Maserati
Posts: 486
Joined: 2009-04-27, Monday, 1:11
Location: Vilnius
Contact:

Re: SourceMod Medic

Post by Maserati » 2009-08-24, Monday, 0:54

arba tokį :roll:
Attachments
german_medic.jpg
german_medic.jpg (29.53 KiB) Viewed 7060 times
Image

Post Reply
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Who is online

Users browsing this forum: No registered users and 1 guest