Hast du denn das Plugin eingefügt in der Server.cfg?
Beiträge von ErikSon
-
-
@Mr.Reese: Könnte dir das eventuell helfen?:
stock GetPosVorSpieler(playerid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
{
if(IsPlayerConnected(playerid))
{
new Float:a;
if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
else GetPlayerFacingAngle(playerid, a);
GetPlayerPos(playerid, x, y, z);
x += (dist * floatsin(-a, degrees));
y += (dist * floatcos(-a, degrees));
return true;
}
return false;
}Benutzung:
//Setzt den Spieler 5 Meter vor den anderen Spieler.
new Float:x, Float:y, Float:z;
GetPosVorSpieler(pID, 5.0, x, y, z); //pID = Spieler, dessen Position abgefragt wird.
SetPlayerPos(playerid, x, y, z); //playerid = Spieler, dessen Position gesetzt wird.Könntest es mal so probieren:
new Float:x, Float:y, Float:z;
GetPosVorSpieler(pID, 5.0/*Distance vom Spieler entfernt*/, x, y, z);
SetPlayerPos(playerid, x+5, y, z); -
@Tom_Sunder: Was steht denn in den einzelnen Zeilen?
-
ErikSon: bekomme folgende Errors.
CodeC:\Users\Tobias\Desktop\Samp Projekte\German SampLife\gamemodes\Selfmade.pwn(1242) : error 004: function "AC_SetVehicleZAngleEx" is not implemented C:\Users\Tobias\Desktop\Samp Projekte\German SampLife\gamemodes\Selfmade.pwn(1259) : error 004: function "AC_SetVehicleZAngleEx" is not implemented C:\Users\Tobias\Desktop\Samp Projekte\German SampLife\gamemodes\Selfmade.pwn(1276) : error 004: function "AC_SetVehicleZAngleEx" is not implemented C:\Users\Tobias\Desktop\Samp Projekte\German SampLife\gamemodes\Selfmade.pwn(1293) : error 004: function "AC_SetVehicleZAngleEx" is not implemented Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 4 Errors.
Lösche mal alles, was mit "AC_SetVehicleZAngleEx" zu tun hat, habe vergessen die Sache zu löschen..
Nein. es kommen keine Errormeldungen
Hast du denn auch die Includes definiert im Script? ( dini + ocmd ) -
Ja.
Beispiel:
Testserver. Ich include die AC.inc und nix geht. Chat nicht, alle stehen AFK rum.
Nehme ich es raus, geht alles.
Kommen vlt in der Konsole irgendwelche Errormeldungen oder so? -
Version 3.3 [fixed]
Log
-> Habe eine Funktion falsch definiert -> Erledigt!
-> Habe eine Funktion vergessen zu definieren -> Erledigt!
-> Habe die Variablennamen abgeändert -> Sollte nun keine Probleme mehr geben!
@CrashGamesDE: Wenn du das AntiCheat entfernst, klappt es denn dann?
-
Danke euch
Ich habe jetzt noch ein paar neue Funktionen, jedoch brauche ich noch ein paar Tipps zur VerbesserungWäre nett, wenn ihr welche Posten würdet!
-
stock Where(func[]){
new dir:dHandle = dir_open("./scriptfiles/Accounts/");
new item[40], type, datei[20], readstr[200],count;
while(dir_list(dHandle, item, type))
{
if(type == FM_FILE)
{
format(datei,20,"/Accounts/%s",item);
new File:file = f_open(datei);
while(f_read(file, readstr){
if(strfind(func,readstr,false) != -1) ++count;
}
}
}
dir_close(dHandle);
return count;
}
Die Funktion ist dafür da, bei allen Spielern eine bestimmte Information aus deren Spielerdatei herauszufinden, ohne MySQL..-> Wie könnte ich das z.B. machen?
format(string,...,"%s",Where("Admin") >= 1); // das mit dem ">=1" & auch halt mit Strings ( Where("Name") > Name ) [iwi sowas]Kann mir da vlt jemand helfen?
-
Probiers mal so:
ocmd:acp(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,5)) return SendClientMessage(playerid,ROT,"Zugriff Verweigert");
new pID;
if(sscanf(params,"u",pID))return SendClientMessage(playerid,-1,"/acp [playerid]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Spieler ist nicht Online");
new string[256],str[64];
format(str, sizeof str, "Name: %s",SpielerName(pID)), strcat(string,str);
format(str, sizeof str, "Timebans: %s",GetPVarInt(playerid,"Banned1")), strcat(string,str);
format(str, sizeof str, "Kicks: %s",GetPVarInt(playerid,"Banned2")), strcat(string,str);
return ShowPlayerDialog(playerid,DIALOG_ACP,DIALOG_STYLE_MSGBOX,"Admin Control Panel",string,"Ok","");
}
Könnte man eig noch ein wenig Ressourcensparender machen..
Mach mal:
ocmd:acp(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,5)) return SendClientMessage(playerid,ROT,"Zugriff Verweigert");
new string1[200],string2[200],string3[128],pID,rest[500];
if(sscanf(params,"u",pID))return SendClientMessage(playerid,-1,"/acp [playerid]");
if(IsPlayerConnected(pID))
{
format(string1, sizeof string1, "Name: %s",SpielerName(pID));
format(string2, sizeof string2, "Timebans: %s",GetPVarInt(playerid,"Banned1"));
format(string3, sizeof string3, "Kicks: %s",GetPVarInt(playerid,"Banned2"));
format(rest, sizeof rest, "%s\n%s\n%s\n", string1,string2,string3);
if(!isPlayerAnAdmin(playerid,5)) return ShowPlayerDialog(playerid,DIALOG_ACP,DIALOG_STYLE_MSGBOX,"Admin Control Panel",rest,"Ok","");
}
else return SendClientMessage(playerid,ROT,"Spieler ist nicht Online");
return 1;
}
Zu viele unnötige Strings und wozu 2x Adminabfrage?//Edit: Außerdem ist die 2. Adminabfrage falsch.. Wenn er nicht min Admin Level 5 ist, dann wird ihm das Adminpanel angezeigt.. ?
PS: Das return am Ende kannste dir sparen, da du den Code schon beendest.. -
Erikson?
Wenn ich jetzt Army Bazooka geb (über das script wenn er duty geht mit giveplayerweapon) wird der dann auch gebannt?
Nein, man wird nur gebannt, wenn man sich die Waffe wirklich cheated, das heißt, wenn du Serverside eigentlich keine Waffe hast... -
Deshalb:
if(sscanf(params,"uis/*i und s sind noch zwei parameter, die man eingeben muss, damit der Befehl läuft*/",pID))return SendClientMessage(playerid,BLAU,"/acp [playerid]");//Machs so:
if(sscanf(params,"u",pID))return SendClientMessage(playerid,BLAU,"/acp [playerid]"); -
Muss mit /acp zusammen hängen.
Sicher?
Hast du mal den Befehl rausgenommen und dann getestet?PS; Setze den Arrayindex von "Grund" auf 64..
Soviel Zeichen wirst du eh nie in deinem Grund verwenden.. -
...?
Was klappt denn nun nicht bzw wo und welche warnings / errors bekommt du und wo bekommst du die?Mehr Informationen wären toll ; )
-
Die markierte Zeile muss so aussehen:
SetPVarInt (playerid, "Banned?", GetPVarInt (playerid,"Banned?")+1); -
ocmd:giveweapon(playerid,params[]){ if(!isPlayerAnAdmin(playerid,5))return SendClientMessage(playerid,COLOR_DARKRED,"Du bist kein Admin Rang 5"); { new pID,waffe,munition,waffenname[64],string[100],string1[100],string2[100]; if(sscanf(params,"uii",pID,waffe,munition))return SendClientMessage(playerid,COLOR_DARKRED,"/waffegeben [waffenid] [munition]"); GivePlayerWeapon(pID,waffe,munition); GetWeaponName(waffe,waffenname,sizeof(waffenname)); format(string1,sizeof(string1),"Du hast %s %s mit %i schuss gegeben",SpielerName(pID),waffenname,munition); SendClientMessage(playerid,COLOR_YELLOW,string1); format(string2,sizeof(string2),"%s hat dir %s mit %i schuss gegeben",SpielerName(playerid),waffenname,munition); SendClientMessage(pID,COLOR_YELLOW,string2); for(new i=0; i<GetMaxPlayers(); i++) { if(IsPlayerConnected(i)) { if(isPlayerAnAdmin(i,GetPVarInt(playerid,"Adminlevel"))) { format(string,sizeof(string),"Admin: %s hat %s %s mit %i schuss gegeben",SpielerName(playerid),SpielerName(pID),waffenname,munition); SendClientMessage(i,COLOR_YELLOW,string); } } } } return 1;}
Die Admin abfrage musst du noch nach dein Server anpassen.
Unnötig, deine ganzen Strings...
Nutze einen String, das reicht vollkommen... -
Achso.. Ja, kommt drauf an, wie ihr es einstellt.. Entweder wird er gebannt, oder gekickt, es sei denn, die Funktion ist ausgeschaltet..
-
1. Mir fehlt der Zusammenhang, klar wenn du Objekte löschen möchtest kannst du DestroyObject nutzen oder beim streamer Plugin DestroyDynamicObject oder
alle im umkreis des Spielers Streamer_DestroyAllVisibleItems(playerid, type, serverwide = 1) oder auf dme Server Streamer_DestroyAllItems(type, serverwide = 1).
Bei bestimmten Objekten brauchst du die Objectid, welche du temporär zwischenspeichern musst in einer variable jedoch glaub ich nicht das dich diese Antwort weiter gebracht hat.2. Ja es ist schon möglich, du hast den richtigen Ansatz
stock Where(func[]){
new dir:dHandle = dir_open("./scriptfiles/Accounts/");
new item[40], type, datei[20], readstr[200],count;
while(dir_list(dHandle, item, type))
{
if(type == FM_FILE)
{
format(datei,20,"/Accounts/%s",item);
new File:file = f_open(datei);
while(f_read(file, readstr){
if(strfind(func,readstr,false) != -1) ++count;
}
}
}
dir_close(dHandle);
return count;
}damit könntest du das ganze zählen lassen, falls du die Ergebnisse möchtest konntest du die in einem extra verzeichniss zwischenspeichern und nur die id zurückgeben
von dem file worüber man dieses nochmal extra auslesen muss, oder mann nutzt ein dynamisches Array.3. Woher soll ich wissen ob der Code richtig ist, ich würde es generel nicht so machen aber nun gut, ich gebe dir nur lösungsvorschläge was du daraus machst ist deine Sache ^^-
1. Ich meinte einfach nur Objekte, die ich mal entfernt habe.. Wo genau soll ich die Objekte bei dem Spieler entfernen? Bei OnPlayerConnect würde er beim 3. mal oder so crashen, oder das Game hängt sich auf..3. Wie könnte ich es denn am Besten machen?
//Edit: 2. Wie könnte ich das z.B. machen?
format(string,...,"%s",Where("Admin") >= 1); // das mit dem ">=1" & auch halt mit Strings ( Where("Name") > Name ) [iwi sowas] -
cheat system ist as jn bun auch für cheater?
Wie bitte?Das ist gegen Cheater, oder was meinst du?
-
ich ahb deinen Bfehl kopiert
Aber den älteren Befehl von ihm..Hier:
dcmd_benutzerdurchsuchen(playerid,params[])
{
new dir:Benutzer = dir_open("./scriptfiles/Webseiten/"), type, item[40], string[64], file[1024], bool:found = false;
if(!strlen(params)) { return SendClientMessage(playerid,COLOR_RED,"Benutze: /benutzerdurchsuchen [Suchbegriff (bitte nur ein Wort!)]"); }
printf("params: %s", params);
while(dir_list(Benutzer, item, type))
{
printf("item: %s / type: %d (%d)", item, type, FM_FILE);
if(type == FM_FILE)
{
format(file, sizeof(file), "/scriptfiles/Webseiten/%s", item);
printf("File Open: %s", file);
new File:rFile = fopen(file, io_read);
fread(rFile, file);
printf("item: %s / file(inhalt): %s", item, file);
if(strfind(file, params, true) != -1)
{
printf("Found");
format(string, sizeof(string), "%s enthält das Wort oder die Zahl %s", item, params);
SendClientMessage(playerid, COLOR_GREEN, string);
found = true;
}
fclose(rFile);
}
//else { SendClientMessage(playerid, COLOR_RED, "Es ist ein Fehler aufgetreten (Error F4826)"); printf("Error F4826"); }
}
print("Ende");
if(!found) return SendClientMessage(playerid, COLOR_RED, "Es wurde leider nichts gefunden!");
else return 1;
} -
Hat wer das Include noch?