Szerző Téma: Pontok odaadása  (Megtekintve 873 alkalommal)

Pontok odaadása
« Dátum: 2011. május 14. - 11:58:08 »
0 Show voters
Sziasztok,csináltam a szerveremhez egy tapasztalat rendszert.
El vannak mentve de nem tudom,hogy hogy adjam oda a jutalmat amikor megvan az 1000.
OnPlayerUpdate-nél próbáltam,de rájöttem,hogy nem jó,mert minden pillanatban friissít.
Kéne hozzá egy timer,de sajanos,azt még nem csináltam,tehát nincs hozzá tapasztalatom.
Amit bele kéne rakni:
 
[pawn]if(GetPlayerScore(playerid) == 1000)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 1-es szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:3 db gránát,és $250 000.\");
    GivePlayerMoney(playerid, 250000);
    GivePlayerWeapon(playerid, 16, 3);
    return 1;
    }
    if(GetPlayerScore(playerid) == 1500)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 2-es szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:3 db lõszerrel egy rakétavetõ,és $500 000.\");
    GivePlayerMoney(playerid, 500000);
    GivePlayerWeapon(playerid, 35, 3);
    return 1;
    }
    if(GetPlayerScore(playerid) == 2300)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 3-as szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:10 db gránát,és $750 000.\");
    GivePlayerMoney(playerid, 750000);
    GivePlayerWeapon(playerid, 16, 10);
    return 1;
    }
    if(GetPlayerScore(playerid) == 3000)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 4-es szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:5 db lõszerrel egy hõkövetõ rakéta,és $1 250 000.\");
    GivePlayerMoney(playerid, 1250000);
    GivePlayerWeapon(playerid, 36, 5);
    return 1;
    }
    if(GetPlayerScore(playerid) == 5000)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 5-ös szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:5 db gránát,7 lõszerrel egy rakétavetõ,és $2 000 000.\");
    GivePlayerMoney(playerid, 2000000);
    GivePlayerWeapon(playerid, 16, 5);
    GivePlayerWeapon(playerid, 35, 7);
    return 1;
    }[/pawn]

 
a Timerrel kapcsoltban van elképzelésem,de erroros:
 
forward pontok(playerid);
new PontTimer;

 

PontTimer = SetTimer(\"Üzenet\", 1, 1); 

 
[pawn]forward pontok(playerid);
     if(GetPlayerScore(playerid) == 1000)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 1-es szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:3 db gránát,és $250 000.\");
    GivePlayerMoney(playerid, 250000);
    GivePlayerWeapon(playerid, 16, 3);
      return 1;
}
[/pawn]

Nem elérhető Stray

  • 617
    • Profil megtekintése
Pontok odaadása
« Válasz #1 Dátum: 2011. május 14. - 12:15:30 »
0 Show voters
talán így.
[pawn]
#include <a_samp>
forward Pontok(playerid);
public OnFilterScriptInit() {
SetTimer(\"Pontok\", 1000, true); // Timer létrehozása.
//Szintaxis: (\"a callback neve\", idõ(ezredmásodpercbe), ismétlõdjön-e)
return 1;
}
public OnFilterScriptExit() {
return 1;
}
public Pontok(playerid) {
    if(GetPlayerScore(playerid) == 1000)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 1-es szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:3 db gránát,és $250 000.\");
    GivePlayerMoney(playerid, 250000);
    GivePlayerWeapon(playerid, 16, 3);
    return 1;
    }
   
    else if(GetPlayerScore(playerid) == 1500)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 2-es szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:3 db lõszerrel egy rakétavetõ,és $500 000.\");
    GivePlayerMoney(playerid, 500000);
    GivePlayerWeapon(playerid, 35, 3);
    return 1;
    }
   
    else if(GetPlayerScore(playerid) == 2300)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 3-as szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:10 db gránát,és $750 000.\");
    GivePlayerMoney(playerid, 750000);
    GivePlayerWeapon(playerid, 16, 10);
    return 1;
    }
   
    else if(GetPlayerScore(playerid) == 3000)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 4-es szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:5 db lõszerrel egy hõkövetõ rakéta,és $1 250 000.\");
    GivePlayerMoney(playerid, 1250000);
    GivePlayerWeapon(playerid, 36, 5);
    return 1;
    }
   
    else if(GetPlayerScore(playerid) == 5000)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 5-ös szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:5 db gránát,7 lõszerrel egy rakétavetõ,és $2 000 000.\");
    GivePlayerMoney(playerid, 2000000);
    GivePlayerWeapon(playerid, 16, 5);
    GivePlayerWeapon(playerid, 35, 7);
    return 1;
    }
   
    return 1;
}[/pawn]

Pontok odaadása
« Válasz #2 Dátum: 2011. május 14. - 12:23:23 »
0 Show voters
Idézetet írta: straY\' date=1305368130\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"8147\" data-ipsquote-contentclass=\"forums_Topic
talán így.
[pawn]
#include <a_samp>
forward Pontok(playerid);
public OnFilterScriptInit() {
SetTimer(\"Pontok\", 1000, true); // Timer létrehozása.
//Szintaxis: (\"a callback neve\", idõ(ezredmásodpercbe), ismétlõdjön-e)
return 1;
}
public OnFilterScriptExit() {
return 1;
}
public Pontok(playerid) {
    if(GetPlayerScore(playerid) == 1000)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 1-es szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:3 db gránát,és $250 000.\");
    GivePlayerMoney(playerid, 250000);
    GivePlayerWeapon(playerid, 16, 3);
    return 1;
    }
   
    else if(GetPlayerScore(playerid) == 1500)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 2-es szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:3 db lõszerrel egy rakétavetõ,és $500 000.\");
    GivePlayerMoney(playerid, 500000);
    GivePlayerWeapon(playerid, 35, 3);
    return 1;
    }
   
    else if(GetPlayerScore(playerid) == 2300)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 3-as szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:10 db gránát,és $750 000.\");
    GivePlayerMoney(playerid, 750000);
    GivePlayerWeapon(playerid, 16, 10);
    return 1;
    }
   
    else if(GetPlayerScore(playerid) == 3000)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 4-es szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:5 db lõszerrel egy hõkövetõ rakéta,és $1 250 000.\");
    GivePlayerMoney(playerid, 1250000);
    GivePlayerWeapon(playerid, 36, 5);
    return 1;
    }
   
    else if(GetPlayerScore(playerid) == 5000)
    {
    SendClientMessage(playerid, 0x00FF00FF, \"Level Up!Grat. a 5-ös szinthez.\");
    SendClientMessage(playerid, 0xFF0000FF, \"Jutalmad:5 db gránát,7 lõszerrel egy rakétavetõ,és $2 000 000.\");
    GivePlayerMoney(playerid, 2000000);
    GivePlayerWeapon(playerid, 16, 5);
    GivePlayerWeapon(playerid, 35, 7);
    return 1;
    }
   
    return 1;
}[/pawn]
 
Ugyan azt csinálja,mint OnPlayerUpdate-nál(floodol),de azért köszi.
Szerk:Valahogy azt kéne megcsinálni,hogy ha megkapta,már na kaphasson többet.
« Utoljára szerkesztve: 2011. május 14. - 12:25:36 írta kadaradam »

Nem elérhető Csabesz

  • 7827
    • Profil megtekintése
Pontok odaadása
« Válasz #3 Dátum: 2011. május 14. - 12:35:30 »
0 Show voters
Változóval..  ;)

Pontok odaadása
« Válasz #4 Dátum: 2011. május 14. - 12:49:40 »
0 Show voters
Idézetet írta: SticK date=1305369330\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"8147\" data-ipsquote-contentclass=\"forums_Topic
Változóval..  ;)
 
oké,odáig megvan,hogy
 
new Pontok[MAX_PLAYERS];

 
tovább nem tudom :( ;D

Pontok odaadása
« Válasz #5 Dátum: 2011. május 14. - 13:10:14 »
0 Show voters
Itt csak én veszek észre minden kis hibát??
A timer nem fog lefutni, mert van adva a callbackodnál egy változó, a \"playerid\"
Ha ezt nem írod be a timerbe, akkor nem fogja lefuttatni..
Maximum így lehetne.
 
public OnPlayerConnect(playerid) 
{
    SetTimerEx(\"Pontok\", 1000, 1, \"d\", playerid);
    return 1;
}

 


A floodot pedig
[pawn]new ScoreFlood[MAX_PALYERS][6]; // mode vagy script elejére[/pawn]
Azért 6, mert ahogy néztem, 5 szinted van és +1 mivel a 0 is egy szint asszem
[pawn]if(GetPlayerScore(playerid) == xxxx) //lekérdezi a score-t
{
    if(ScoreFlood[playerid][0] == 1) return 1; //ha a változó értéke 1, akkor nem csinál semmit
    ScoreFlood[playerid][0] = 1; //az elsõ lefutás, azaz amikor a játékos score pontja eléri az 1000-t, és leküldi az üzenetet, akkor megváltoztatja a változó értékét 1-re, hogy mégegyszer ne küldje el az üzenetet
    //többi cucc, ami ennél van
}[/pawn]
ScoreFlood[playerid][0] --> 0 helyére a szintet, növekedve
Az elsõ szintnél 0, a másodiknál 1, és így tovább

Pontok odaadása
« Válasz #6 Dátum: 2011. május 14. - 13:18:54 »
0 Show voters
Köszi mindenkinek,jó lett.
TangeriMalac példáját alkalmaztam.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal