Jump to content

TheGodfather

Membru
  • Posts

    500
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by TheGodfather

  1. Merge pentru chat, dar pentru comenzi nu, de exemplu daca scriu /a 123 de mai multe trimite mesajul. Cum trebuie sa scriu aici SCMf(playerid, COLOR_LIGHTRED, "[Anti-Spam] Asteapta %d secunde.", antispam[playerid] - gettime()); ca sa imi arate fiecare secunda, gen 3 2 1?
  2. ^
  3. Am pus la task LocalTimer[1000] if(antispam[i] > 0) antispam[i]--; Cand jucatorul scrie ceva pe chat sau tasteaza o comanda, vreau sa primeasca deelay de 3 secunda dar nu reusesc nicicum...
  4. Salut, as vrea sa pun pe serverul meu un sistem de anti spam care sa fie pentru char, indiferent ca e doar scris sau comenzi. Am facut un timer doar ca indiferent ce as scrie imi tot spune ca trebuie sa astept 3 secunde chiar daca nu am mai scris nicio comanda pana atunci.
  5. Am scris asa: YCMD:relog(playerid, params[], help) { SCM(playerid, -1, "In curand te vei reconecta!"); OnPlayerDisconnect(playerid); OnPlayerConnect(playerid); IsPlayerLogged[playerid] = 1; return 1; } Nu imi mai da kick dar cand ma pune sa scriu pinul nu imi apar cifrele.
  6. Ok, multumesc pentru raspuns
  7. La OnPlayerSpawn este.
  8. #define KickEx(%1) SetTimerEx ( "Kick_Ban", 500, false, "ii", %1, false )
  9. Nu am o functie de deelay, am doar asta: if(IsPlayerLogged[playerid] == 0) { SCM(playerid, COLOR_WARNING, "* Ai primit kick deoarece nu te-ai logat."); KickEx(playerid); return true; }
  10. Da, a aparut dar mi-a dat kick instant
  11. Asta am primit dupa ce am dat /relog, nu a mers
  12. Incerc acum.
  13. Salut, aveti idee cum pot face o comanda prin care playerii sa se poata reconecta pe server fara sa inchida sampul? Gen sa dea /relog si sa le incarce din nou toate datele, sa puna din nou parola etc.
  14. YCMD:spray(playerid, params[], help) { new clanid = PlayerInfo[playerid][pClan], string[180]; if(clanid == 0) return SCM(playerid, COLOR_GREY, "Nu faci parte dintr-un clan!"); if(ClanDuty[playerid] == 0) return SCM(playerid,-1,"Nu esti la datorie!"); if(IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, "Nu poti folosi aceasta comanda atata timp cat esti intr-un vehicul!"); if(StartedSpray2[playerid] == 1) return true; if(StartedSpray[playerid] == 0) ClanProces[playerid] = 0; new hour,minute,second, year, month, day; gettime(hour,minute,second); getdate(year, month, day); //if(hour >= 00 && hour < return SCM(playerid, -1, "Nu poti folosi aceasta comanda in intervalul 00-08."); for(new h = 0; h < MAX_SAFEZONES; h++) { if(PlayerToPoint(8, playerid, GraffitiInfo[h][gfX], GraffitiInfo[h][gfY], GraffitiInfo[h][gfZ])) { if(StartedSprayOn[playerid] != 0 && StartedSprayOn[playerid] != h) /*{}*/ SCM(playerid, COLOR_LGREEN, "Eroare: Nu poti desena pe acest perete!"); else if(GraffitiInfo[h][gfOwned] == PlayerInfo[playerid][pClan]) SCM(playerid, COLOR_LGREEN, "Eroare: Acest perete este detinut de clanul tau!"); /*else*/ if(CountWallSpray(h,playerid) == 1) SCM(playerid, COLOR_LGREEN, "Eroare: Mai este o persoana care deseneaza pe acest perete!"); else { if(StartedSpray[playerid] == 0) { if(GraffitiInfo[h][gfOwned] == 0) format(string, sizeof(string), "Ai inceput sa scrii pe peretele cu id-ul %d, detinut de clanul: Server.", h); else format(string, sizeof(string), "Ai inceput sa scrii pe peretele cu id-ul %d, detinut de clanul: %s", h, ClanInfo[GraffitiInfo[h][gfOwned]][clName]); SCM(playerid, COLOR_LIGHTBLUE, string); GraffitiInfo[h][gfAttacked] = clanid; format(string, sizeof(string), "{%s}%s (din clanul %s) a inceput sa deseneze pe peretele clanului tau (turf id %d).", ClanInfo[GraffitiInfo[h][gfOwned]][clColor], GetName(playerid), ClanInfo[PlayerInfo[playerid][pClan]][clName], h); SendClanMessage(GraffitiInfo[h][gfOwned], string); } ApplyAnimation(playerid,"SPRAYCAN","spraycan_full",4.0,0,0,0,0,0); PlayerPlaySound(playerid, 1134, 0.0, 0.0, 0.0); SetTimerEx( "FinalProces", 4000, 0, "d", playerid ); StartedSpray[playerid] = 1; StartedSpray2[playerid] = 1; StartedSprayOn[playerid] = h; } } } return true; } function CountWallSpray(id,playerid) { foreach(Player, i) { if(StartedSprayOn[i] == id && i != playerid) return true; } return false; } function FinalProces(playerid) { if(IsPlayerConnected(playerid) && StartedSpray[playerid] == 1) { ClearAnimations(playerid); new string[180]; new test = 7 + random(6); ClanProces[playerid] += test; if(ClanProces[playerid] >= 100) { new tagname[180]; new i = StartedSprayOn[playerid]; format(string, sizeof(string), "{%s}%s (din clanul %s) a reusit sa deseneze complet peretele (turf id %d).", ClanInfo[GraffitiInfo[i][gfOwned]][clColor], GetName(playerid), ClanInfo[PlayerInfo[playerid][pClan]][clName], i); SendClanMessage(GraffitiInfo[i][gfOwned], string); format(string, sizeof(string), "{%s}%s a reusit sa deseneze complet peretele (turf id %d).", ClanInfo[GraffitiInfo[i][gfOwned]][clColor], GetName(playerid), i); SendClanMessage(PlayerInfo[playerid][pClan], string); GraffitiInfo[i][gfOwned] = PlayerInfo[playerid][pClan]; DestroyDynamicObject(GraffitiInfo[i][gfObject]); GraffitiInfo[i][gfObject] = CreateDynamicObject(19353, GraffitiInfo[i][gfX], GraffitiInfo[i][gfY], GraffitiInfo[i][gfZ], 0.0, 0.0, GraffitiInfo[i][gfRot]); format(tagname, sizeof(tagname), "{%s}%s\n%s", ClanInfo[GraffitiInfo[i][gfOwned]][clColor], ClanInfo[GraffitiInfo[i][gfOwned]][clName], ClanInfo[GraffitiInfo[i][gfOwned]][clTag]); SetDynamicObjectMaterialText(GraffitiInfo[i][gfObject], 0, tagname, OBJECT_MATERIAL_SIZE_512x256, "BankGothic Md BT", 60, 1, 0xfff0f0f0, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER); GraffitiInfo[StartedSprayOn[playerid]][gfAttacked] = 0; new query[256]; mysql_format(SQL, query, sizeof(query), "UPDATE `graffiti` SET `Owned`='%d' WHERE `ID`='%d'", PlayerInfo[playerid][pClan], i); mysql_tquery(SQL, query, "", ""); StartedSpray[playerid] = 0; StartedSpray2[playerid] = 0; StartedSprayOn[playerid] = 0; } else { format(string, sizeof(string), "Continua sa desenezi peretele! (%d%s)", ClanProces[playerid], "%%"); SCM(playerid, COLOR_GOLD, string); } StartedSpray2[playerid] = 0; } return true; } Asa am acum functiile, merge bine adica daca cineva incepe sa deseneze intr-un loc si vine altcineva sa deseneze nu poate. Daca merg la alt loc de spray, porneste procentul de la cat aveam inainte, nu de la 0. Cred ca trebuie facut ceva timer ca daca un player incepe sa dea spray si se pune afk, ceilalti nu o sa mai poata da ca le da mesajul ca un player vopseste deja peretele.
  15. Acesta este gamemode-ul original B-HOOD.pwn
  16. La prima metoda, dupa ce cineva da spray o data, dupa nimeni nu mai poate da si primeste mesajul: mai este o persoana care desenaza pe acest perete. La a doua metoda, daca incep sa desenez pe un perete merge bine, dar daca merg la alt loc imi zice ca nu pot desena pe acel perete.
  17. Voi incerca in seara asta, multumesc frumos pentru raspuns. O sa revin cu un raspuns sa zic daca merge.
  18. Salut, cand dau /spray si sunt 2 sau mai multi playeri, apare de mai multe ori mesajul ca mai este o persoana care desenaza pe acest perete, dar ne lasa pe amandoi sa desenam, gen animatia merge. Progresul nu se pune de la amandoi, cum as putea face ca doar un jucatori sa poata da /spray? YCMD:spray(playerid, params[], help) { new clanid = PlayerInfo[playerid][pClan], string[180]; if(clanid == 0) return SCM(playerid, COLOR_GREY, "Nu faci parte dintr-un clan!"); if(ClanDuty[playerid] == 0) return SCM(playerid,-1,"Nu esti la datorie!"); if(IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, "Nu poti folosi aceasta comanda atata timp cat esti intr-un vehicul!"); if(StartedSpray2[playerid] == 1) return true; if(StartedSpray[playerid] == 0) ClanProces[playerid] = 0; new hour,minute,second, year, month, day; gettime(hour,minute,second); getdate(year, month, day); //if(hour >= 00 && hour < return SCM(playerid, -1, "Nu poti folosi aceasta comanda in intervalul 00-08."); for(new h = 0; h < MAX_SAFEZONES; h++) { if(PlayerToPoint(8, playerid, GraffitiInfo[h][gfX], GraffitiInfo[h][gfY], GraffitiInfo[h][gfZ])) { if(StartedSprayOn[playerid] != 0 && StartedSprayOn[playerid] != h) {} //SCM(playerid, COLOR_LGREEN, "Eroare: Nu poti desena pe acest perete!"); else if(GraffitiInfo[h][gfOwned] == PlayerInfo[playerid][pClan]) SCM(playerid, COLOR_LGREEN, "Eroare: Acest perete este detinut de clanul tau!"); //else if(CountWallSpray(h) == 1) SCM(playerid, COLOR_LGREEN, "Eroare: Mai este o persoana care deseneaza pe acest perete!"); else { if(StartedSpray[playerid] == 0) { if(GraffitiInfo[h][gfOwned] == 0) format(string, sizeof(string), "Ai inceput sa scrii pe peretele cu id-ul %d, detinut de clanul: Server", h); else format(string, sizeof(string), "Ai inceput sa scrii pe peretele cu id-ul %d, detinut de clanul: %s", h, ClanInfo[GraffitiInfo[h][gfOwned]][clName]); SCM(playerid, COLOR_LIGHTBLUE, string); GraffitiInfo[h][gfAttacked] = clanid; format(string, sizeof(string), "{%s}%s (din clanul %s) a inceput sa deseneze pe peretele clanului tau (turf id %d).", ClanInfo[GraffitiInfo[h][gfOwned]][clColor], GetName(playerid), ClanInfo[PlayerInfo[playerid][pClan]][clName], h); SendClanMessage(GraffitiInfo[h][gfOwned], string); } ApplyAnimation(playerid,"SPRAYCAN","spraycan_full",4.0,0,0,0,0,0); PlayerPlaySound(playerid, 1134, 0.0, 0.0, 0.0); SetTimerEx( "FinalProces", 4000, 0, "d", playerid ); StartedSpray[playerid] = 1; StartedSpray2[playerid] = 1; StartedSprayOn[playerid] = h; } } } return true; } function CountWallSpray(id) { foreach(Player, i) { if(StartedSprayOn[i] == id) return true; } return false; } function FinalProces(playerid) { if(IsPlayerConnected(playerid) && StartedSpray[playerid] == 1) { ClearAnimations(playerid); new string[180]; new test = 7 + random(6); ClanProces[playerid] += test; if(ClanProces[playerid] >= 100) { new tagname[180]; new i = StartedSprayOn[playerid]; format(string, sizeof(string), "{%s}%s (din clanul %s) a reusit sa deseneze complet peretele (turf id %d).", ClanInfo[GraffitiInfo[i][gfOwned]][clColor], GetName(playerid), ClanInfo[PlayerInfo[playerid][pClan]][clName], i); SendClanMessage(GraffitiInfo[i][gfOwned], string); format(string, sizeof(string), "{%s}%s a reusit sa deseneze complet peretele (turf id %d).", ClanInfo[GraffitiInfo[i][gfOwned]][clColor], GetName(playerid), i); SendClanMessage(PlayerInfo[playerid][pClan], string); GraffitiInfo[i][gfOwned] = PlayerInfo[playerid][pClan]; DestroyDynamicObject(GraffitiInfo[i][gfObject]); GraffitiInfo[i][gfObject] = CreateDynamicObject(19353, GraffitiInfo[i][gfX], GraffitiInfo[i][gfY], GraffitiInfo[i][gfZ], 0.0, 0.0, GraffitiInfo[i][gfRot]); format(tagname, sizeof(tagname), "{%s}%s\n%s", ClanInfo[GraffitiInfo[i][gfOwned]][clColor], ClanInfo[GraffitiInfo[i][gfOwned]][clName], ClanInfo[GraffitiInfo[i][gfOwned]][clTag]); SetDynamicObjectMaterialText(GraffitiInfo[i][gfObject], 0, tagname, OBJECT_MATERIAL_SIZE_512x256, "BankGothic Md BT", 60, 1, 0xfff0f0f0, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER); GraffitiInfo[StartedSprayOn[playerid]][gfAttacked] = 0; new query[256]; mysql_format(SQL, query, sizeof(query), "UPDATE `graffiti` SET `Owned`='%d' WHERE `ID`='%d'", PlayerInfo[playerid][pClan], i); mysql_tquery(SQL, query, "", ""); StartedSpray[playerid] = 0; StartedSpray2[playerid] = 0; StartedSprayOn[playerid] = 0; } else { format(string, sizeof(string), "Continua sa desenezi peretele! (%d%s)", ClanProces[playerid], "%%"); SCM(playerid, COLOR_GOLD, string); } StartedSpray2[playerid] = 0; } return true; }
  19. Ok, multumesc.
  20. Ai spus mai sus ca "Nu am de unde sa stiu ce ai in acel gm si cum functioneaza" si de aia am pus gm-ul, ca sa te uiti in el
  21. Acesta este gamemode-ul, daca te ajuta: B-HOOD.pwn
  22. Imi da aceeasi eroare in logurile serverului doar ca acum nu mai zice ca e index -2 ci e index -1
  23. Salut, folosesc gamemode-ul bhood editat de hpq123 care este si pe net iar la comanda /find, cand cineva intra intr-un biz sau casa nu imi pune checkpoint la intrarea in casa, si pune unul aiurea, departe. In rest, cand jucatorul nu este intr-o casa sau biz imi arata bine. Ma puteti ajuta sa fac sa mearga? YCMD:find(playerid, params[], help) { if(JobWorking[playerid] == 1) return 1; if(CP[playerid] != 0 || targetfind[playerid] != -1) return ShowPlayerDialog(playerid, DIALOG_CHECKPOINT, DIALOG_STYLE_MSGBOX, "Checkpoint", "Ai deja un checkpoint activ.\nDoresti sa-l anulezi? Daca da, apasa pe 'Ok'.", "Ok", "Exit"); new id,giveplayer[30],string[100]; if(PlayerInfo[playerid][pJob] != 6 && PlayerInfo[playerid][pMember] != 1 && PlayerInfo[playerid][pMember] != 2 && PlayerInfo[playerid][pMember] != 14 && !IsACop(playerid)) return SCM(playerid, COLOR_GREY, "Nu ai jobul 'Detective'."); if(sscanf(params, "u",id)) return SCM(playerid, COLOR_GREY, "USAGE: {FFFFFF}/find <playerid/name>"); if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID) return SCM(playerid, COLOR_GREY, "Acel player nu este conectat."); if(Spectate[id] != 255) return SCM(playerid, COLOR_GREY, "Acel player este ocupat!"); if(id == playerid) return SCM(playerid, COLOR_GREY, "Nu poti folosi aceasta comanda asupra ta!"); if(togfind[id] == 1) return SCM(playerid,COLOR_GREY, "Acel player nu poate fi urmarit!"); if(GetPVarInt(id, "Undercover") == 1) return SCM(playerid, COLOR_GREY, "Acel player este ocupat!"); if(BizRobbed[playerid] != 0) return 1; if(togfind[id] == 1 && OnDuty[playerid] == 0 && PlayerHit[playerid] == -1) return SCM(playerid, COLOR_LGREEN, "Eroare: Acel player nu poate fi urmarit!"); UsedFind[playerid] = 1; GetPlayerName(id, giveplayer, sizeof(giveplayer)); new Float:X,Float:Y,Float:Z; GetPlayerPos(id, X,Y,Z); DisablePlayerCheckpoint(playerid); SetPlayerCheckpointEx(playerid, X,Y,Z, 3.5); targetfind[playerid] = id; CP[playerid] = 294325; format(string, sizeof(string), "* Punctul rosu a fost setat pe %s (%d) care se afla in zona %s.",giveplayer,id,GetPlayerZone(id)); SCM(playerid,COLOR_YELLOW,string); for(new m; m < 2; m++) { if(PlayerInfo[playerid][pDailyMission][m] == 12) CheckMission(playerid, m); } return 1; }
  24. Ok, hai ca pun acum. Multumesc pentru idee. Daca mai apare eroarea o sa revin cu un comment
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.