Deejva 36 Odesláno: 11. Leden, 2013 Share Odesláno: 11. Leden, 2013 Ahoj, mám tu problem. Mám tu klasický admin script, ale když něco napíšu špatně, třeba /Askjdsakodjask nebo něco, tak mě to mutne Zde kod admin scriptu: #include <a_samp> #define COLOR_GREY 0xAFAFAFAA #define COLOR_RED 0xFF0000AA #define COLOR_ORANZOVA 0xFF8C00AA #define BILA 0xFFFFFFFF #define MAX_SLOTS 30 #define dcmd(%1,%2,%3) if ((!strcmp((%3)[1], #%1, true, (%2))) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return true #include <dini> #pragma tabsize 0 #define IPFILE "ip/%s.txt" // Iba pre zjednodušenie prerábanie #define SCM SendClientMessage new string[128]; new playerid2; new cmd[32]; new tmp[32]; new idx; new name [MAX_PLAYER_NAME]; new name1 [MAX_PLAYER_NAME]; new Muted[MAX_SLOTS]; //new Car[MAX_SLOTS]; forward SendReportMessage(color, string[], level); enum IfAdmin { Admin, }; new PlayerAdmin[MAX_SLOTS][ifAdmin]; public OnPlayerConnect(playerid) { PlayerAdmin[playerid][Admin] = 0; new str[128],cesta[50],ip[20];// Vytvoríme premeny GetPlayerIp(playerid,ip,20);//zistíme si hráčovu IP format(cesta,50,IPFILE,ip);//do stringu "cesta" uložíme cestu k súboru ("ip/jehoip.txt") new File:aa;// vytvoríme premenu na súbor new name[MAX_PLAYER_NAME];//premena na nick GetPlayerName(playerid,name,MAX_PLAYER_NAME);//zistíme nick hráča fcreate(cesta);//ak súbor neexistuje, vytvorí ho (funkcie sú nižšie) aa = fopen(cesta,io_read);//otvoríme súbor s parametrom io_read na čítanie new nasiel;//vytvoríme si premenu na kontrolu, či nick tam už zapísaný je while(fread(aa,str)){//spustíme cyklus -> čítanie riadok po riadku DelChar(str);//z prečítaného riadku zmažeme \r\n if(!strcmp(name,str,false)){//skontrolujeme či sa prečítaný nick rovná aktuálnemu nicku nasiel = 1;// ak áno, nastavíme premene hodnotu 1 break;//zastavíme cyklus } } fclose(aa);//zavreme súbor if(nasiel == 0){//ak tam aktuálny nick nieje aa = fopen(cesta,io_append);// otvoríme súbor format(str,128,"%s\r\n",name);//formatom nastavíme stringu text, ktorý chceme zapísať fwrite(aa,str);//zapíšeme do súboru fclose(aa);//zavreme súbor }//ukončíme podmienku return 1; } public OnPlayerRequestSpawn(playerid) { new cesta[128]; format(cesta,128,"/AS/%s.ini",Jmeno(playerid)); if(PlayerAdmin[playerid][Admin] > 0) return true; if(!dini_Exists(cesta)) { dini_Create(cesta); dini_IntSet(cesta, "Level",0); } else { PlayerAdmin[playerid][Admin] = dini_Int(cesta, "Level"); } return 1; } public OnPlayerText(playerid, text[]) { if (Muted[playerid] == 1) { SendClientMessage(playerid,COLOR_RED,"Jsi umlčený!"); return 0; } return 1; } public OnGameModeInit() { return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { /*new string[128]; new playerid2; new cmd[32]; new tmp[32]; new idx; new name [MAX_PLAYER_NAME]; new name1 [MAX_PLAYER_NAME]; */ if(strcmp(cmd, "/mute", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, BILA, "/Mute [iD]"); return 1; } playerid2 = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 2) { GetPlayerName(playerid, name, sizeof(name)); GetPlayerName(playerid2, name1, sizeof(name1)); Muted[playerid2] = 1; format(string, sizeof(string), "%s je umlčený administrátorem %s",name1 ,name); SendClientMessageToAll(COLOR_RED, string); } return 1; } if(strcmp(cmd, "/unmute", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, BILA, "/Unmute [iD]."); return 1; } playerid2 = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 1) { GetPlayerName(playerid, name, sizeof(name)); GetPlayerName(playerid2, name1, sizeof(name1)); Muted[playerid2] = 0; format(string, sizeof(string), "%s byl odmčený administrátorem %s",name1 ,name); SendClientMessageToAll(COLOR_RED, string); } return 1; } if(strcmp(cmd, "/freeze", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid,BILA, "/Freeze [iD]"); return 1; } playerid2 = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 1) { GetPlayerName(playerid, name, sizeof(name)); GetPlayerName(playerid2, name1, sizeof(name1)); TogglePlayerControllable(playerid2,0); format(string, sizeof(string), "%s zmrazen administrátorem %s",name1 ,name); SendClientMessageToAll(COLOR_ORANZOVA, string); } return 1; } if(strcmp(cmd, "/unfreeze", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid,BILA, "/Unfreeze [iD]"); return 1; } playerid2 = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 1) { GetPlayerName(playerid, name, sizeof(name)); GetPlayerName(playerid2, name1, sizeof(name1)); TogglePlayerControllable(playerid2,1); format(string, sizeof(string), "%s byl odmražený administrátorem %s",name1 ,name); SendClientMessageToAll(COLOR_RED, string); } return 1; } if(strcmp(cmd, "/jail", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid,BILA, "/Jail [iD]"); return 1; } playerid2 = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 2) { ResetPlayerWeapons(playerid2); SetPlayerVirtualWorld(playerid, 6); SetPlayerInterior(playerid, 3); SetPlayerPos(playerid2,193.7394,174.8765,1003.0234); format(string, sizeof(string), "%s byl administrátorem %s zavřen do cely",name1 ,name); SendClientMessageToAll(COLOR_RED, string); } return 1; } if(strcmp(cmd, "/unjail", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, BILA, "/Unjail [iD]"); return 1; } playerid2 = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 2) { SetPlayerVirtualWorld(playerid, 6); SetPlayerInterior(playerid, 3); SetPlayerPos(playerid2,208.7293,177.9966,1003.0313); format(string, sizeof(string), "%s byl administrátorem %s propuštěn z vězení",name1 ,name); SendClientMessageToAll(COLOR_RED, string); } return 1; } if(strcmp(cmd, "/setscore", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, BILA, "/Setscore [iD]"); return 1; } playerid2 = strval(tmp); tmp = strtok(cmdtext, idx); new score = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 6) { GetPlayerName(playerid, name, sizeof(name)); GetPlayerName(playerid2, name1, sizeof(name1)); SetPlayerScore(playerid2, score); format(string, sizeof(string), "%s dostal %d bodů od administrátora %s.", name1, score,name); SendClientMessageToAll(COLOR_RED, string); return 1; } else { SendClientMessage(playerid, COLOR_RED, "Nejsi admin !"); } return 1; } if(strcmp(cmd, "/ban", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, BILA, "/Ban [iD]."); return 1; } playerid2 = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 5) { GetPlayerName(playerid, name, sizeof(name)); GetPlayerName(playerid2, name1, sizeof(name1)); format(string, sizeof(string), "%s byl zabanovaný adminisrátorem %s",name1 ,name); SendClientMessageToAll(COLOR_RED, string); Ban( playerid2 ); } return 1; } if(strcmp(cmd, "/kick", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, BILA, "/Kick [iD]"); return 1; } playerid2 = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 2) { GetPlayerName(playerid, name, sizeof(name)); GetPlayerName(playerid2, name1, sizeof(name1)); format(string, sizeof(string), "%s byl kicknutý administrátorem %s",name1 ,name); SendClientMessageToAll(COLOR_RED, string); Kick( playerid2 ); } return 1; } if(strcmp(cmd, "/spec", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, BILA, "/Spec [iD]"); return 1; } playerid2 = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 1) { TogglePlayerSpectating(playerid, 1); PlayerSpectatePlayer(playerid, playerid2); SetPlayerInterior(playerid,GetPlayerInterior(playerid2)); } return 1; } if(strcmp(cmd, "/specoff", true) == 0) { TogglePlayerSpectating(playerid, 0); SetCameraBehindPlayer(playerid); return 1; } if(strcmp(cmd, "/report", true) == 0) { new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) { SendClientMessage(playerid, BILA, "/Report [PROBLEM]"); return 1; } SendClientMessage(playerid, COLOR_RED, "Report byl úspěšně odeslán online administrátorům."); format(string, sizeof(string), "Report napsal: %s(%d): %s",name, playerid, result); SendReportMessage(COLOR_RED, string, 101); printf("[info] %s oznámil (%s)", name, result); return 1; } if(strcmp(cmd, "/ahelp", true) == 0) { SendClientMessage(playerid,COLOR_RED," Admin Příkazy: "); SendClientMessage(playerid,BILA,"Své problemy hlaš online administrátorům přes příkaz /Report"); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 1) { SendClientMessage(playerid,BILA,"Admin lvl 1: /Avila /Mute /Unmute /Freeze /Unfreeze /Spec /Specoff"); } if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 2) { SendClientMessage(playerid,BILA,"Admin lvl 2: /Jail /Unjail /LosSantos /SanFierro /LasVenturas "); } if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 3) { SendClientMessage(playerid,BILA,"Admin lvl 3: /Kick, Funkce do vozidla: Num 8 - Oprava, Num 6 - Hydraulika, Num 4 - Flip, Num 2 - Nitro"); } if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 4) { SendClientMessage(playerid,BILA,"Admin lvl 4: /Heal /Vesta /Hp "); } if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 5) { SendClientMessage(playerid,BILA,"Admin lvl 5: /Ban"); } if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 6) { SendClientMessage(playerid,BILA,"Admin lvl 6: /Setscore "); } if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 12) { SendClientMessage(playerid,BILA,"Hlavní Administrátor: /god "); } if(IsPlayerAdmin(playerid)) { SendClientMessage(playerid,BILA,"Rcon Admin: /Setadmin"); } return 1; } if(strcmp(cmd, "/setadmin", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, BILA, "/Setadmin [iD] [LEVEL]"); return 1; } playerid2 = strval(tmp); tmp = strtok(cmdtext, idx); new level = strval(tmp); if (IsPlayerAdmin(playerid)) { GetPlayerName(playerid, name, sizeof(name)); GetPlayerName(playerid2, name1, sizeof(name1)); PlayerAdmin[playerid2][Admin] = level; new cesta[128]; format(cesta,128,"/AS/%s.ini",meno(playerid2)); format(string, sizeof(string), "%s byl udělen admin lvl %d od administrátora %s", name1, level,name); SendClientMessageToAll(COLOR_RED, string); dini_IntSet(cesta,"Level",level); return 1; } else { SendClientMessage(playerid, COLOR_RED, "Nejsi Admin"); } return 1; } if(strcmp(cmdtext,"/avila",true)==0) { if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 1) { SetPlayerPos(playerid,3757.5,-4,822); SetPlayerInterior(playerid,0); SendClientMessage(playerid,COLOR_RED,"Teleportoval jsi se na admin místo. Zachovávej respekt vůči ostatním adminům!"); } return 1; } if(strcmp(cmdtext,"/lossantos",true)==0) if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 2) { SetPlayerPos(playerid,2498.5,-1672,13.3); SetPlayerInterior(playerid,0); new playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),"Administrátor %s se teleportoval do města Los Santos.", playername); SendClientMessageToAll(0xFF0000FF,string); return 1; } if(strcmp(cmdtext,"/sanfierro",true)==0) if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 2) { SetPlayerPos(playerid,-2031.8,175,28.8); SetPlayerInterior(playerid,0); new playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),"Administrátor %s se teleportoval do města San Fiero.", playername); SendClientMessageToAll(0xFF0000FF,string); return 1; } if(strcmp(cmdtext,"/LasVenturas",true)==0) if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 2) { SetPlayerPos(playerid,2030.3,1007.1,10.7); SetPlayerInterior(playerid,0); new playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),"Administrátor %s se teleportoval do města Las Venturas.", playername); SendClientMessageToAll(0xFF0000FF,string); return 1; } if(strcmp(cmdtext,"/heal",true)==0) if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 4) { SetPlayerHealth(playerid,100); return 1; } if(strcmp(cmdtext,"/vesta",true)==0) if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 4) { SetPlayerArmour(playerid,100); return 1; } if(strcmp(cmdtext,"/hp",true)==0) if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 4) { SetPlayerHealth(playerid,100); SetPlayerArmour(playerid,100); return 1; } if(strcmp(cmdtext,"/god",true)==0) if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 12) { SetPlayerHealth(playerid,9999999999); return 1; } if(strcmp(cmdtext,"/help",true)==0) { SendClientMessage(playerid,BILA,"Příkazy: /kill"); SendClientMessage(playerid,BILA,"Objekty: /Penis, /DPenis"); return 1; } if(strcmp(cmdtext,"/kill",true)==0) { SetPlayerHealth(playerid,0); return 1; } if(strcmp(cmd, "/ip", true) == 0) // Prikaz /ip { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid,BILA, "/Ip [iD]"); //Pri prikazu /IP píše použití return 1; } playerid2 = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 1) //Když je admin level 1 { //A tady dát tu funkci new id = playerid2; new str[500]; // vytvoríme si string new cesta[50]; // vytvoríme si string cestu format(cesta,50,IPFILE,Ip(id));// format na súbor (cestu + názov) new File:Aa = fopen(cesta,io_read);// otvoríme súbor new str2[128];// vytvoríme ďalší string ktorý bude ukladať získaný riadok zo súboru format(str,1000,"Hráč %s mal tieto nicky:\n",Jmeno(id)); // čo asi... xD while(fread(Aa,str2)){// cyklus na čítanie riadku po riadku zo súboru strcat(str,str2);//vložíme string zo súboru do "str" ktorý nakoniec zobrazíme } fclose(Aa);// zavreme súbor ShowPlayerDialog(playerid,3,0,"Anti-Fake",str,"OK","");// zobrazíme dialóg } return 1; } return 0; } public SendReportMessage(color, string[], level) { for(new i=0; i<MAX_SLOTS; i++) { if(PlayerAdmin[i][Admin] >= level || IsPlayerAdmin(i)) { SendClientMessage(i, color, string); } } } strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } stock meno(playerid) { new m[50]; GetPlayerName(playerid,m,50); return m; } QCMD:ip(){ new id = strval(params); // vytvoríme premenu a params prevedieme na integer if(!IsPlayerConnected(id)) return 0; //ak id nieje pripojené, vráti 0 (dajte si tam npr. SCM) new str[500]; // vytvoríme si string new cesta[50]; // vytvoríme si string cestu format(cesta,50,IPFILE,Ip(id));// format na súbor (cestu + názov) new File:Aa = fopen(cesta,io_read);// otvoríme súbor new str2[128];// vytvoríme ďalší string ktorý bude ukladať získaný riadok zo súboru format(str,1000,"Hráč %s mal tieto nicky:\n",Jmeno(id)); // čo asi... xD while(fread(Aa,str2)){// cyklus na čítanie riadku po riadku zo súboru strcat(str,str2);//vložíme string zo súboru do "str" ktorý nakoniec zobrazíme } fclose(Aa);// zavreme súbor ShowPlayerDialog(playerid,3,0,"Anti-Fake",str,"OK","");// zobrazíme dialóg return true;// zastavíme funkciu, vrátime true } stock Ip(i){ new xxx[20]; GetPlayerIp(i,xxx,20); return xxx; } stock DelChar(tstring[]) { new ln = strlen(tstring); if(tstring[ln-2] == '\r')tstring[ln-2] = '\0'; if(tstring[ln-1] == '\n')tstring[ln-1] = '\0'; } stock Jmeno(playerid) { new n[MAX_PLAYER_NAME]; GetPlayerName(playerid,n,MAX_PLAYER_NAME); return n; } stock fcreate(file[]) { if(fexist(file)) return false; new File:cFile = fopen(file,io_write); return fclose(cFile); } #define OPRAVIT KEY_ANALOG_UP #define NITRO KEY_ANALOG_DOWN #define FLIP KEY_ANALOG_LEFT #define HYDRAULIKA KEY_ANALOG_RIGHT //============================================================================== public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { new vehicleid = GetPlayerVehicleID(playerid); //============================================================================== if(newkeys & NITRO) { if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 3) if(IsPlayerInVehicle(playerid,vehicleid)) { PlayerPlaySound(playerid,1133,0.0,0.0,0.0); AddVehicleComponent(vehicleid,1010); GameTextForPlayer(playerid,"~w~Nitro Pridano!",2000,3); } return 1; } //============================================================================== if(newkeys & FLIP) { if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 3) if(IsPlayerInVehicle(playerid,vehicleid)) { PlayerPlaySound(playerid,1133,0.0,0.0,0.0); RepairVehicle(GetPlayerVehicleID(playerid)); new Float:z; if(IsPlayerInAnyVehicle(playerid)){ GetVehicleZAngle(GetPlayerVehicleID(playerid),z); SetVehicleZAngle(GetPlayerVehicleID(playerid),z); GameTextForPlayer(playerid,"~w~Vozidlo Otoceno!",2000,3); } } return 1; } //============================================================================== if(newkeys & HYDRAULIKA) { if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 3) if(IsPlayerInVehicle(playerid,vehicleid)) { PlayerPlaySound(playerid,1133,0.0,0.0,0.0); AddVehicleComponent(vehicleid,1087); GameTextForPlayer(playerid,"~w~Hydraulika Pridana!",2000,3); } return 1; } //============================================================================== if(newkeys & OPRAVIT) { if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 3) if(IsPlayerInVehicle(playerid,vehicleid)) { PlayerPlaySound(playerid,1133,0.0,0.0,0.0); RepairVehicle(GetPlayerVehicleID(playerid)); GameTextForPlayer(playerid,"~w~Vozidlo Opraveno!",2000,3); } return 1; } return 0; } //======================================================================== A když napíšu třeba /ip 0 napíše to: /Mute [iD] Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 12. Leden, 2013 Author Share Odesláno: 12. Leden, 2013 A má to být takhle? : OnPlayerCommandText public OnPlayerCommandText(playerid, cmdtext[]) { dcmd(freeze,6,cmdtext); return 0; } a dole dcmd_freeze(playerid, params[]) { if(!strlen(tmp)) { SendClientMessage(playerid,BILA, "/Freeze [iD]"); return 1; } playerid2 = strval(tmp); if(IsPlayerAdmin(playerid) || PlayerAdmin[playerid][Admin] >= 1) { GetPlayerName(playerid, name, sizeof(name)); GetPlayerName(playerid2, name1, sizeof(name1)); TogglePlayerControllable(playerid2,0); format(string, sizeof(string), "%s zmrazen administrátorem %s",name1 ,name); SendClientMessageToAll(COLOR_ORANZOVA, string); } return 1; } když to mam takhle, tak když napíšu freeze, nebo freeze a ID pořád to píše /freeze [iD]. Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 12. Leden, 2013 Author Share Odesláno: 12. Leden, 2013 Funguje, dík. Link to comment Share on other sites More sharing options...
Dotaz
Deejva 36
Ahoj, mám tu problem. Mám tu klasický admin script, ale když něco napíšu špatně, třeba /Askjdsakodjask nebo něco, tak mě to mutne
Zde kod admin scriptu:
A když napíšu třeba /ip 0 napíše to: /Mute [iD]
Link to comment
Share on other sites
2 odpovědí na tuto otázku
Recommended Posts