GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Andorko - 2014. Április 05. - 20:54:20

Cím: Fishing Help
Írta: Andorko - 2014. Április 05. - 20:54:20
Hi
Nekem az lenne a problémám, hogy ha valaki halászik a szerveren és még van fent valaki akkor a pénzt nem az kapja aki halászik hanem az amelyik nem tehát vannak a szerveren mondjúk 2-en és X halászik akkor Y kapja a pénzt nem az aki halászik
Itt a script is nem tom mi lehet benne a hiba
 
new horgaszbot[MAX_PLAYERS];
new horgasztimer;
new RodObject;
CMD:fishing ( playerid, params[ ] )
{
if(!IsPlayerInRangeOfPoint(playerid, 100.0,2044.8909,-149.1644,1.3744 )) return SendClientMessage(playerid,COLOR_WARNING, \"Nem vagy a megadott helyen: /fishinghelp\" );
if(horgaszbot[playerid]== -1)return SendClientMessage(playerid,COLOR_WARNING,\"Nincs horgaszbotod vagyél egyet /bolt\");
{
GameTextForPlayer( playerid, \"~b~~r~~g~Fishing\", 3000, 3);
horgasztimer = SetTimerEx(\"horgaszas\", 30000, true, \"u\", playerid);
horgaszbot[ playerid ] = 0;
TogglePlayerControllable(playerid,0);
ApplyAnimation(playerid,\"SWORD\",\"sword_block\",50.0,0,1,0,1,1);
}
return 1;
}
CMD:exitfishing(playerid,params[])
{
if(!IsPlayerInRangeOfPoint(playerid, 100.0,2044.8909,-149.1644,1.3744 )) return SendClientMessage(playerid,COLOR_WARNING, \"Nem Horgászol\" );
KillTimer(horgasztimer);
TogglePlayerControllable(playerid,1);
RemovePlayerAttachedObject(playerid,0);
RemovePlayerAttachedObject(playerid,RodObject);
ApplyAnimation(playerid, \"CARRY\", \"crry_prtial\", 2.0, 0, 0, 0, 0, 0);
horgaszbot[ playerid ] = -1;
SendClientMessage(playerid,COLOR_WARNING,\"Kiléptél a horgászásból\");
return 1;
}
public horgaszas (playerid)
{
switch(random(10))
{
        case 0:
                ShowPlayerDialog(playerid, 6741, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 210 KG-s Tigriscápát Ára: 18000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,18000);
        case 1:
                ShowPlayerDialog(playerid, 6742, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 250 KG-s Pontyot Ára: 20000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,20000);
        case 2:
                ShowPlayerDialog(playerid, 6743, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 200 KG-s Fehér Cápát Ára: 21000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,21000);
case 3:
                ShowPlayerDialog(playerid, 6744, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 250 KG-s Tigriscápát Ára: 20000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,20000);
        case 4:
                ShowPlayerDialog(playerid, 6745, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 300 KG-s Fehér Cápát Ára: 25000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,25000);
        case 5:
                ShowPlayerDialog(playerid, 6746, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 150 KG-s Murénát Ára: 15000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,11000);
        case 6:
                ShowPlayerDialog(playerid, 6747, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 100 KG-s Tonhalat Ára: 13000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,13000);
case 7:
                ShowPlayerDialog(playerid, 6748, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 65 KG-s Tonhalat Ára: 9000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,9000);
        case 8:
                ShowPlayerDialog(playerid, 6749, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 50 KG-s Murénát Ára: 8000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,8000);
        case 9:
                ShowPlayerDialog(playerid, 6750, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 40 KG-s Pontyot Ára: 6000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,6000);
        case 10:
                ShowPlayerDialog(playerid, 6751, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 30 KG-s Harcsát Ára: 5000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,5000);
}
KillTimer(horgasztimer);
TogglePlayerControllable(playerid,1);
ApplyAnimation(playerid, \"CARRY\", \"crry_prtial\", 2.0, 0, 0, 0, 0, 0);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
}
    if(dialogid ==dialog_bolt)
    {
        if(response)
        {
        if( listitem==0)
    {
    horgaszbot[playerid] = 0 ;
    RodObject = SetPlayerAttachedObject(playerid, 0,18632,6,0.079376,0.037070,0.007706,181.482910,0.000000,0.000000,1.000000,1.000000,1.000000);
    GivePlayerMoney(playerid,-1000);
SendClientMessage(playerid,-1,\"{00ff00}Vásároltál egy horgászbotot\");
    }
    }
    }
    return 0;

 
Nem [ pwn = code ] [ / pwn ], hanem [ code = pawn ] [ / code ]. Javítottam!
Cím: Fishing Help
Írta: Dfoglalo - 2014. Április 05. - 21:10:57
[mod]Ez saját mód? Ha nem, melyik?[/mod]


Mivel bõven elég neked a játékos ID-je, ezért próbáld meg d, vagy i paraméterrel.
 
SetTimerEx(\"horgaszas\", 30000, true, \"d\", playerid);

 
vagy
 
SetTimerEx(\"horgaszas\", 30000, true, \"i\", playerid);
Cím: Fishing Help
Írta: Andorko - 2014. Április 05. - 21:58:26
Mind a 2-õt probáltam de nem jó ugyan úgy van
Cím: Fishing Help
Írta: Dfoglalo - 2014. Április 05. - 22:16:24
[mod]Kérdeztem valamit![/mod]


Amúgy a timer változóján is legyen egy playerid-s tömb, ,ert így minden játékos számára leáll a timer, nem csak annak, akinek le kell, hogy álljon.
Cím: Fishing Help
Írta: Andorko - 2014. Április 05. - 23:14:09
Ez nem saját itt találtam a fórumon ezt a scriptet csak átalakitottam
És a másik felét nem értem
\"Amúgy a timer változóján is legyen egy playerid-s tömb\"
Cím: Fishing Help
Írta: Dfoglalo - 2014. Április 05. - 23:18:28
Ha így használod:
 
horgasztimer = SetTimerEx(\"horgaszas\", 30000, true, \"u\", playerid);

 
Akkor csak 1, azaz egy darab timerrõl van szó. Így a KillTimernél minden játékos számára megáll a timer. Annak is, akinek nem kéne. Így viszont már minden játékos kap külön, saját timert:
 
horgasztimer[playerid] = SetTimerEx(\"horgaszas\", 30000, true, \"u\", playerid);

 
Mivel ugye rácsatolsz egy tömböt, melynek értéke mindig más, a playerid lesz. És így már minden játékosnak létre lesz hozva egy-egy timer.
Cím: Fishing Help
Írta: Andorko - 2014. Április 06. - 00:47:09
Hibát ad ki
 
D:\\Programok\\DSPS Szerver\\gamemodes\\Hybryd.pwn(3944) : error 028: invalid subscript (not an array or too many subscripts): \"horgasztimer\"
D:\\Programok\\DSPS Szerver\\gamemodes\\Hybryd.pwn(3944) : warning 215: expression has no effect
D:\\Programok\\DSPS Szerver\\gamemodes\\Hybryd.pwn(3944) : error 001: expected token: \";\", but found \"]\"
D:\\Programok\\DSPS Szerver\\gamemodes\\Hybryd.pwn(3944) : error 029: invalid expression, assumed zero
D:\\Programok\\DSPS Szerver\\gamemodes\\Hybryd.pwn(3944) : fatal error 107: too many error messages on one linep
Cím: Fishing Help
Írta: Dfoglalo - 2014. Április 06. - 01:20:16
Bocsi, elfelejtettem, hogy kezdõ vagy.
A változó létrehozásakor:
 
new horgasztimer[MAX_PLAYERS] // Vagy ha van saját max playersu definiálosd, azt írd be, vagy a slotok számát kézzel, számmal

 
A KillTimerbe pedig:
 
KillTimer(horgasztimer[playerid]);
Cím: Fishing Help
Írta: Andorko - 2014. Április 05. - 20:54:20
Hi
Nekem az lenne a problémám, hogy ha valaki halászik a szerveren és még van fent valaki akkor a pénzt nem az kapja aki halászik hanem az amelyik nem tehát vannak a szerveren mondjúk 2-en és X halászik akkor Y kapja a pénzt nem az aki halászik
Itt a script is nem tom mi lehet benne a hiba
 
new horgaszbot[MAX_PLAYERS];
new horgasztimer;
new RodObject;
CMD:fishing ( playerid, params[ ] )
{
if(!IsPlayerInRangeOfPoint(playerid, 100.0,2044.8909,-149.1644,1.3744 )) return SendClientMessage(playerid,COLOR_WARNING, \"Nem vagy a megadott helyen: /fishinghelp\" );
if(horgaszbot[playerid]== -1)return SendClientMessage(playerid,COLOR_WARNING,\"Nincs horgaszbotod vagyél egyet /bolt\");
{
GameTextForPlayer( playerid, \"~b~~r~~g~Fishing\", 3000, 3);
horgasztimer = SetTimerEx(\"horgaszas\", 30000, true, \"u\", playerid);
horgaszbot[ playerid ] = 0;
TogglePlayerControllable(playerid,0);
ApplyAnimation(playerid,\"SWORD\",\"sword_block\",50.0,0,1,0,1,1);
}
return 1;
}
CMD:exitfishing(playerid,params[])
{
if(!IsPlayerInRangeOfPoint(playerid, 100.0,2044.8909,-149.1644,1.3744 )) return SendClientMessage(playerid,COLOR_WARNING, \"Nem Horgászol\" );
KillTimer(horgasztimer);
TogglePlayerControllable(playerid,1);
RemovePlayerAttachedObject(playerid,0);
RemovePlayerAttachedObject(playerid,RodObject);
ApplyAnimation(playerid, \"CARRY\", \"crry_prtial\", 2.0, 0, 0, 0, 0, 0);
horgaszbot[ playerid ] = -1;
SendClientMessage(playerid,COLOR_WARNING,\"Kiléptél a horgászásból\");
return 1;
}
public horgaszas (playerid)
{
switch(random(10))
{
        case 0:
                ShowPlayerDialog(playerid, 6741, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 210 KG-s Tigriscápát Ára: 18000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,18000);
        case 1:
                ShowPlayerDialog(playerid, 6742, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 250 KG-s Pontyot Ára: 20000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,20000);
        case 2:
                ShowPlayerDialog(playerid, 6743, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 200 KG-s Fehér Cápát Ára: 21000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,21000);
case 3:
                ShowPlayerDialog(playerid, 6744, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 250 KG-s Tigriscápát Ára: 20000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,20000);
        case 4:
                ShowPlayerDialog(playerid, 6745, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 300 KG-s Fehér Cápát Ára: 25000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,25000);
        case 5:
                ShowPlayerDialog(playerid, 6746, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 150 KG-s Murénát Ára: 15000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,11000);
        case 6:
                ShowPlayerDialog(playerid, 6747, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 100 KG-s Tonhalat Ára: 13000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,13000);
case 7:
                ShowPlayerDialog(playerid, 6748, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 65 KG-s Tonhalat Ára: 9000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,9000);
        case 8:
                ShowPlayerDialog(playerid, 6749, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 50 KG-s Murénát Ára: 8000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,8000);
        case 9:
                ShowPlayerDialog(playerid, 6750, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 40 KG-s Pontyot Ára: 6000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,6000);
        case 10:
                ShowPlayerDialog(playerid, 6751, DIALOG_STYLE_MSGBOX,\"Fishing\",\"Kifogtál egy 30 KG-s Harcsát Ára: 5000$\",\"OK\",\"\") > 0 && GivePlayerMoney(playerid,5000);
}
KillTimer(horgasztimer);
TogglePlayerControllable(playerid,1);
ApplyAnimation(playerid, \"CARRY\", \"crry_prtial\", 2.0, 0, 0, 0, 0, 0);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
}
    if(dialogid ==dialog_bolt)
    {
        if(response)
        {
        if( listitem==0)
    {
    horgaszbot[playerid] = 0 ;
    RodObject = SetPlayerAttachedObject(playerid, 0,18632,6,0.079376,0.037070,0.007706,181.482910,0.000000,0.000000,1.000000,1.000000,1.000000);
    GivePlayerMoney(playerid,-1000);
SendClientMessage(playerid,-1,\"{00ff00}Vásároltál egy horgászbotot\");
    }
    }
    }
    return 0;

 
Nem [ pwn = code ] [ / pwn ], hanem [ code = pawn ] [ / code ]. Javítottam!
Cím: Fishing Help
Írta: Dfoglalo - 2014. Április 05. - 21:10:57
[mod]Ez saját mód? Ha nem, melyik?[/mod]


Mivel bõven elég neked a játékos ID-je, ezért próbáld meg d, vagy i paraméterrel.
 
SetTimerEx(\"horgaszas\", 30000, true, \"d\", playerid);

 
vagy
 
SetTimerEx(\"horgaszas\", 30000, true, \"i\", playerid);
Cím: Fishing Help
Írta: Andorko - 2014. Április 05. - 21:58:26
Mind a 2-õt probáltam de nem jó ugyan úgy van
Cím: Fishing Help
Írta: Dfoglalo - 2014. Április 05. - 22:16:24
[mod]Kérdeztem valamit![/mod]


Amúgy a timer változóján is legyen egy playerid-s tömb, ,ert így minden játékos számára leáll a timer, nem csak annak, akinek le kell, hogy álljon.
Cím: Fishing Help
Írta: Andorko - 2014. Április 05. - 23:14:09
Ez nem saját itt találtam a fórumon ezt a scriptet csak átalakitottam
És a másik felét nem értem
\"Amúgy a timer változóján is legyen egy playerid-s tömb\"
Cím: Fishing Help
Írta: Dfoglalo - 2014. Április 05. - 23:18:28
Ha így használod:
 
horgasztimer = SetTimerEx(\"horgaszas\", 30000, true, \"u\", playerid);

 
Akkor csak 1, azaz egy darab timerrõl van szó. Így a KillTimernél minden játékos számára megáll a timer. Annak is, akinek nem kéne. Így viszont már minden játékos kap külön, saját timert:
 
horgasztimer[playerid] = SetTimerEx(\"horgaszas\", 30000, true, \"u\", playerid);

 
Mivel ugye rácsatolsz egy tömböt, melynek értéke mindig más, a playerid lesz. És így már minden játékosnak létre lesz hozva egy-egy timer.
Cím: Fishing Help
Írta: Andorko - 2014. Április 06. - 00:47:09
Hibát ad ki
 
D:\\Programok\\DSPS Szerver\\gamemodes\\Hybryd.pwn(3944) : error 028: invalid subscript (not an array or too many subscripts): \"horgasztimer\"
D:\\Programok\\DSPS Szerver\\gamemodes\\Hybryd.pwn(3944) : warning 215: expression has no effect
D:\\Programok\\DSPS Szerver\\gamemodes\\Hybryd.pwn(3944) : error 001: expected token: \";\", but found \"]\"
D:\\Programok\\DSPS Szerver\\gamemodes\\Hybryd.pwn(3944) : error 029: invalid expression, assumed zero
D:\\Programok\\DSPS Szerver\\gamemodes\\Hybryd.pwn(3944) : fatal error 107: too many error messages on one linep
Cím: Fishing Help
Írta: Dfoglalo - 2014. Április 06. - 01:20:16
Bocsi, elfelejtettem, hogy kezdõ vagy.
A változó létrehozásakor:
 
new horgasztimer[MAX_PLAYERS] // Vagy ha van saját max playersu definiálosd, azt írd be, vagy a slotok számát kézzel, számmal

 
A KillTimerbe pedig:
 
KillTimer(horgasztimer[playerid]);