Moin, gibt es eigentlich aktive textbasierte RP Server? Habe früher viel SAMP gespielt und so etwas in der Art tatsächlich noch nie bei GTA V MP gesehen.
Moin,
ja, es wird demnächst ein Text RP Server eröffnen.
Mit freundlichen Grüßen
Allrounder18
Moin, gibt es eigentlich aktive textbasierte RP Server? Habe früher viel SAMP gespielt und so etwas in der Art tatsächlich noch nie bei GTA V MP gesehen.
Moin,
ja, es wird demnächst ein Text RP Server eröffnen.
Mit freundlichen Grüßen
Allrounder18
alles überpuft. aber mir wurde gerade gesagt das plesk bei ucp probleme machen und keyhelp benutzen soll
Das kann ich so nicht bestätigen.
ja habe ich und sein ucp habe ich hinbekommen und meinen nicht.
Okay, das am Bild ist doch sein UCP?
Moin,
hast du dir das Tutorial von Nemesus dazu angesehen?
Mit freundlichen Grüßen
Allrounder18
Alles anzeigenHey, ja möglich ist das definitiv.
Als Orientierung kannst ja mal hier rein schauen: https://github.com/derpierre65/pWBB4/releases/tag/0.2
Glaube es gibt noch kein wbb5 include, müsste man dann selbst noch erarbeiten 😅
#Handy
Moin,
es geht auch mit WSC 5, Anleitung gibts in der Beschreibung.
Mit freundlichen Grüßen
Allrounder18
ich glaube ich habe jetzt gepfuscht, es funktioniert aufjedenfall, ALLOW NULLS war auf NO und Default war auf NULL also habe ich einfach nulls erlaubt..
kann man das so machen oder ehr weniger?
Moin,
ck könnte Charakterkill sein. Wert auf Wie definiert 0 oder 1 setzen.
MfG
In Zeile 10 muss das playerid und nicht pID sein.
Zum Anderen musst evtl mal print-Debuggen, welchen Wert AccountInfo[playerid][account_Admin] hat und welchen Wert der dazugehörige AdminInfo-AdminRang hat.
Danke, ich hab das Gefühl es lieg an folgendem Code.
stock SendAdminInfo(pID,farbe, string[])
{
new message[500];
if(AccountInfo[pID][account_Admin] > 0)
{
format(message, sizeof(message), "{40FF00}ADMININFO:{FFFFFF} %s.", string);
}
SendClientMessage(pID, farbe, message);
return 1;
}
SendAdminInfo(pID,WEISS,string);
Alles anzeigen
Edit: Der Print sieht so aus: Kicknachricht: {FF0000}Projektleiter{FFFFFF}{FF0000} Allrounder18(0){FFFFFF} hat {FF0000}Allrounder18(0){FFFFFF} gekickt. Grund: Test
Edit: Fehler gefunden, das Script wollte keine zwei Codes mit Fabre hintereinander.
Danke für die Hile.
Das wird daran liegen, dass du trotz deines DelayedKick Timers die Kick-Funktion in Zeile 16 aufrufst. Einfach die entfernen.
Danke hat geklappt, jetzt kommt nen anderer Fehler.
ocmd:kick(playerid,params[])
{
if(AccountInfo[playerid][account_Admin] > 0)
{
new pID,string[256],string1[256],string2[256],grund[64];
if(sscanf(params, "us[256]", pID,grund)) return SendBenutzung(playerid, "/kick [ID/Name] [Grund]");
if(!CharacterInfo[pID][character_Eingeloggt])return SendFehler(playerid,"Dieser Spieler ist nicht eingeloggt");
format(string, sizeof(string),"%s wurde von %s %s gekickt. Grund: %s",GetFarbName(playerid), GetAdminRang(AccountInfo[playerid][account_Admin],true),GetFarbName(playerid),grund);
SendInfoToAll(string);
format(string1, sizeof(string1),"Du wurdest von %s %s gekickt. Grund: %s",GetAdminRang(AccountInfo[pID][account_Admin],true),GetFarbName(pID),grund);
SendInfo(pID,string1);
printf("Kicknachricht: %s", string);
SetTimerEx("DelayedKick", 1000, false, "i", pID);
format(string2, sizeof(string2),"Du hast %s gekickt. Grund: %s",GetFarbName(pID),grund);
SendInfo(playerid,string2);
}
return 1;
}
FUNCTION DelayedKick(pID)
{
Kick(pID);
return 1;
}
stock GetAdminRang(adminlevel,bool:colored = false)
{
new rang[255];
switch(adminlevel)
{
case 0: {//Spieler
if(!colored) format(rang, sizeof(rang), "%s",AdminInfo[0][admin_Rang0]);
else format(rang, sizeof(rang), "%s",AdminInfo[0][admin_Rang0]);
}
case 1: {//Guide
if(!colored) format(rang, sizeof(rang), "%s",AdminInfo[0][admin_Rang1]);
else format(rang, sizeof(rang), "{00AB1A}%s{FFFFFF}",AdminInfo[0][admin_Rang1]);
}
case 2: {//Administrator
if(!colored) format(rang, sizeof(rang), "%s",AdminInfo[0][admin_Rang2]);
else format(rang, sizeof(rang), "{2E9AFE}%s{FFFFFF}",AdminInfo[0][admin_Rang2]);
}
case 3: {//Entwickler
if(!colored) format(rang, sizeof(rang), "%s",AdminInfo[0][admin_Rang3]);
else format(rang, sizeof(rang), "{d225ba}%s{FFFFFF}",AdminInfo[0][admin_Rang3]);
}
case 4: {//Projektleiter
if(!colored) format(rang, sizeof(rang), "%s",AdminInfo[0][admin_Rang4]);
else format(rang, sizeof(rang), "{FF0000}%s{FFFFFF}",AdminInfo[0][admin_Rang4]);
}
}
return rang;
}
Alles anzeigen
Wenn ich in der Zeile "... wurde von ... vom Server gekickt" true anstatt false eingebe erscheint die Message nicht, woran kann das liegen?
Vielen Dank im Voraus.
Mit freundlichen Grüßen
Allrounder18
Guten Abend,
ich versuch mich mal wieder in SAMP und bin auf folgendes Problem gestoßen.
ocmd:kick(playerid,params[])
{
if(AccountInfo[playerid][account_Admin] > 0)
{
new pID,string[128],string1[128],string2[128],grund[64];
if(sscanf(params, "us[128]", pID,grund)) return SendBenutzung(playerid, "/kick [ID/Name] [Grund]");
if(!CharacterInfo[pID][character_Eingeloggt])return SendFehler(playerid,"Dieser Spieler ist nicht eingeloggt");
format(string, sizeof(string),"%s wurde von %s %s gekickt. Grund: %s",GetAdminRang(AccountInfo[playerid][account_Admin],false),GetFarbName(playerid),grund);
SendClientMessageToAll(ORANGE,string);
format(string1, sizeof(string1),"Du wurdest von %s gekickt. Grund: %s",GetFarbName(pID),grund);
SendInfo(pID,string1);
printf("Kicknachricht: %s", string1);
SetTimerEx("DelayedKick", 10000, false, "i", pID);
format(string2, sizeof(string2),"Du hast %s gekickt. Grund: %s",GetFarbName(pID),grund);
SendInfo(playerid,string2);
Kick(pID);
}
return 1;
}
FUNCTION DelayedKick(pID)
{
Kick(pID);
return 1;
}
Alles anzeigen
Der Nachricht "Du wurdest von ... gekickt" kommt beim Spieler nicht an, woran kann das liegen?
Vielen Dank im Voraus.
Mit freundlichen Grüßen
Allrounder18
Ändern kann man immer alles, da wirst du wohl nie fertig werden - solang es für dich funktioniert und auch vom Codestyle passt, dann ist ja alles gut.
Das war eher darauf bezogen, da irgendwas nicht stimmtNa im Bestfall irgendwann nach dem Respawnen das Fahrzeug, unter Umständen mit einem Timer - damit du sicher sein kannst, dass das Fahrzeug bereits respawnt ist
Danke, werde ich versuchen.
Das liegt daran, das der zweite Parameter fehlt, in meinem Beitrag hatte ich das direkt nachgebessert - im Zitat von dir ist es auch schon richtig.
Also einfach den 2 Parameter, die Größe, ergänzen
format(AllFahrzeugInfo[vID][fahrzeug_Kennzeichen], sizeof(kennzeichen), "%s", kennzeichen);
Danke, klappt. jetzt wird das Kennzeiche beim Laden nicht gesetzt.
FUNCTION LadeFrakFahrzeuge(vID)
{
AllFahrzeugInfo[vID][fahrzeug_ID] = cache_insert_id();
//format(kennzeichen,50,"%d",RandomEx(1000,9999));
//format(kennzeichen1, 11, "%s",kennzeichen);
SetVehicleToRespawn(vID);
SetVehicleNumberPlate(vID, AllFahrzeugInfo[vID][fahrzeug_Kennzeichen]);
return 1;
}
stock SaveVehicles()
{
new string[300];
for(new i = 0; i<MAX_VEHICLES; i++)
{
if(i == INVALID_VEHICLE_ID)continue;
GetVehiclePos(i,AllFahrzeugInfo[i][fahrzeug_Spawn][0],AllFahrzeugInfo[i][fahrzeug_Spawn][1],AllFahrzeugInfo[i][fahrzeug_Spawn][2]);
mysql_format(handle, string, sizeof(string), "UPDATE `cars` SET `x` = '%f', `y` = '%f', `z` = '%f', `r` = '%f', `kilometer` = '%d', `batterie` = '%d', `tank` = '%f', `plate` = '%s' WHERE `id` = '%d'",
AllFahrzeugInfo[i][fahrzeug_Spawn][0],AllFahrzeugInfo[i][fahrzeug_Spawn][1],AllFahrzeugInfo[i][fahrzeug_Spawn][2],AllFahrzeugInfo[i][fahrzeug_Spawn][3],
AllFahrzeugInfo[i][fahrzeug_Kilometerstand],AllFahrzeugInfo[i][fahrzeug_Batterie],
AllFahrzeugInfo[i][fahrzeug_Tankmenge],AllFahrzeugInfo[i][fahrzeug_Kennzeichen],AllFahrzeugInfo[i][fahrzeug_ID]);
mysql_tquery(handle, string);
}
return 1;
}
Alles anzeigen
Muss ich noch irgendwo etwas ändern?
Wo setzte ich den bei Addfraktioncar das Putplayerintovehicle am besten hin?
magst du mal den aktuellen Code dazu posten bzw. den Fehler
stock AddFraktionCar(playerid,frakcarmodelid,frakcarfraktion)
{
new string[300],kennzeichen[11],Float:pos[4];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
GetPlayerFacingAngle(playerid, pos[3]);
new vID = CreateVehicle(frakcarmodelid, pos[0], pos[1], pos[2], pos[3], -1, -1, -1);
AllFahrzeugInfo[vID][fahrzeug_ModelID] = frakcarmodelid;
AllFahrzeugInfo[vID][fahrzeug_Typ] = 2;
AllFahrzeugInfo[vID][fahrzeug_Owner] = frakcarfraktion;
AllFahrzeugInfo[vID][fahrzeug_Tankmenge] = FahrzeugInfo[frakcarmodelid-400][veh_Menge];
AllFahrzeugInfo[vID][fahrzeug_Batterie] = 100;
AllFahrzeugInfo[vID][fahrzeug_Kilometerstand] = 0;
AllFahrzeugInfo[vID][fahrzeug_Motorschaden] = 0;
AllFahrzeugInfo[vID][fahrzeug_Spawn][0] = pos[0];
AllFahrzeugInfo[vID][fahrzeug_Spawn][1] = pos[1];
AllFahrzeugInfo[vID][fahrzeug_Spawn][2] = pos[2];
AllFahrzeugInfo[vID][fahrzeug_Spawn][3] = pos[3];
//format(kennzeichen,11,"%d",RandomEx(1000,9999));
//format(kennzeichen1, 11, "%s",kennzeichen);
PutPlayerInVehicle(playerid, vID, 0);
format(kennzeichen, sizeof(kennzeichen), "%c%c%c%c%c%c%c", RandomEx1('A','Z'), RandomEx1('A','Z'), RandomEx1('1','9'), RandomEx1('1','9'), RandomEx1('1','9'), RandomEx1('A','Z'), RandomEx1('A','Z'));
format(AllFahrzeugInfo[vID][fahrzeug_Kennzeichen], "%s", kennzeichen);
mysql_format(handle, string, sizeof(string), "INSERT INTO `cars` ( `modelid`, `typ`, `owner`, `tank`, `batterie`, `kilometer`, `motorschaden`, `x`, `y`, `z`, `r`, `plate` ) VALUES ( '%i', '%i', '%i', '%f', '%i', '%i', '%i', '%f', '%f', '%f', '%f', '%s' )", frakcarmodelid,2,frakcarfraktion,AllFahrzeugInfo[vID][fahrzeug_Tankmenge],100,0,0,pos[0],pos[1],pos[2],pos[3],kennzeichen);
mysql_tquery(handle, string, "LadeFrakFahrzeuge", "i", vID);
SetVehicleToRespawn(vID);
SetVehicleNumberPlate(vID, AllFahrzeugInfo[vID][fahrzeug_Kennzeichen]);
printf("%s",string);
printf("%s",kennzeichen);
return 1;
}
Alles anzeigen
error 035: argument type mismatch (argument 2) is genau die Zeile mit deinem Format
Das liegt daran, dass das Fahrzeug re-spawned oder re-streamt werden muss. (Quelle: https://sampwiki.blast.hk/wiki/SetVehicleNumberPlate)
Ein String in eine Variable bekommst du mit format format(AllFahrzeugInfo[vID][fahrzeug_Kennzeichen], sizeof(kennzeichen), "%s", kennzeichen);
Wobei kennzeichen die Variable wäre
Danke, das format nimmt samp leider nicht.
Edit: Wo setze ich den das PutPlayerIntoVehicle am besten hin?
In Pawn musst du das in einer Zeile schreiben:
INSERT INTO `cars` ( `modelid`, `typ`, `owner`, `tank`, `batterie`, `kilometer`, `motorschaden`, `x`, `y`, `z`, `r`, `plate` ) VALUES ( '%i', '%i', '%i', '%f', '%i', '%i', '%i', '%f', '%f', '%f', '%f', '%s' )
Danke, klappt.
Wie baue ich das jetzt noch in die Variable AllFahrzeugInfo[vID][fahrzeug_Kennzeichen] ein im Stock Addfraktioncar?
Edit: Jetzt wird zwar das Fahrzeug mit Kennzeichen in der DB gespeichert aber das Kennzeichen wird ingame nicht gesetzt.
Versuch am besten immer zu escapen, wenn du SQL verwendest - dies ist ein oft gemachter Fehler.
Um dann zu prüfen, ob deine Abfrage korrekt ist, kannst du immer online-Tools verwenden, wie dieses hier: https://www.eversql.com/sql-syntax-check-validator/
Danke, der Validator sagt es is richtig.
Wenn ich es so schreibe wie du vorschlägst wirft das Script Errors.
Moin,
ich möchte gerne auf meine Frakcars ein Kennzeichen gebe welches in der DB gespeichert werden soll, jedoch klappts nicht.
Funktionen:
stock AddFraktionCar(playerid,frakcarmodelid,frakcarfraktion)
{
new string[300],kennzeichen[11],Float:pos[4];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
GetPlayerFacingAngle(playerid, pos[3]);
new vID = CreateVehicle(frakcarmodelid, pos[0], pos[1], pos[2], pos[3], -1, -1, -1);
AllFahrzeugInfo[vID][fahrzeug_ModelID] = frakcarmodelid;
AllFahrzeugInfo[vID][fahrzeug_Typ] = 2;
AllFahrzeugInfo[vID][fahrzeug_Owner] = frakcarfraktion;
AllFahrzeugInfo[vID][fahrzeug_Tankmenge] = FahrzeugInfo[frakcarmodelid-400][veh_Menge];
AllFahrzeugInfo[vID][fahrzeug_Batterie] = 100;
AllFahrzeugInfo[vID][fahrzeug_Kilometerstand] = 0;
AllFahrzeugInfo[vID][fahrzeug_Motorschaden] = 0;
AllFahrzeugInfo[vID][fahrzeug_Spawn][0] = pos[0];
AllFahrzeugInfo[vID][fahrzeug_Spawn][1] = pos[1];
AllFahrzeugInfo[vID][fahrzeug_Spawn][2] = pos[2];
AllFahrzeugInfo[vID][fahrzeug_Spawn][3] = pos[3];
PutPlayerInVehicle(playerid, vID, 0);
//format(kennzeichen,11,"%d",RandomEx(1000,9999));
//format(kennzeichen1, 11, "%s",kennzeichen);
format(kennzeichen, sizeof(kennzeichen), "%c%c%c%c%c%c%c", RandomEx1('A','Z'), RandomEx1('A','Z'), RandomEx1('1','9'), RandomEx1('1','9'), RandomEx1('1','9'), RandomEx1('A','Z'), RandomEx1('A','Z'));
mysql_format(handle, string, sizeof(string), "INSERT INTO cars (modelid,typ,owner,tank,batterie,kilometer, motorschaden, x,y,z,r,plate) VALUES (%i,%i,%i,%f,%i,%i,%i,%f,%f,%f,%f,%s)", frakcarmodelid,2,frakcarfraktion,AllFahrzeugInfo[vID][fahrzeug_Tankmenge],100,0,0,pos[0],pos[1],pos[2],pos[3],kennzeichen);
mysql_tquery(handle, string, "LadeFrakFahrzeuge", "i", vID);
SetVehicleNumberPlate(vID, kennzeichen);
printf("%s",string);
printf("%s",kennzeichen);
return 1;
}
FUNCTION LadeFrakFahrzeuge(vID)
{
new kennzeichen[11];
AllFahrzeugInfo[vID][fahrzeug_ID] = cache_insert_id();
//format(kennzeichen,50,"%d",RandomEx(1000,9999));
//format(kennzeichen1, 11, "%s",kennzeichen);
//format(kennzeichen, sizeof(kennzeichen), "%c%c%c%c%c%c%c", RandomEx1('A','Z'), RandomEx1('A','Z'), RandomEx1('1','9'), RandomEx1('1','9'), RandomEx1('1','9'), RandomEx1('A','Z'), RandomEx1('A','Z'));
SetVehicleNumberPlate(vID, kennzeichen);
return 1;
}
Alles anzeigen
MYSQL Error:
[13:14:35 - 09.02.2021] [ERROR] error #1054 while executing query "INSERT INTO cars (modelid,typ,owner,tank,batterie,kilometer, motorschaden, x,y,z,r,plate) VALUES (416,2,3,80.000000,100,0,0,-89.773300,-1621.156860,3.365408,78.901093,LF765WT)": Unknown column 'LF765WT' in 'field list'
Was mache ich falsch?
Vielen Dank im Voraus.
MfG
Allrounder18
Ist natürlich eine schwierige Sache, da das ganze nicht im Wiki aufgelistet ist.
Wenn man da aber HTTP-Statuscodes mit einbezieht, wäre 403 die fehlende Zugriffsberechtigung, ja.
Hm okay, die beiden Dateien die auf den Webspace gehören liegen im cms unterverzeichnis wo wbb Core installiert ist und haben 777 und gehören dem web benutzer an.
Naja, die Variable hast du bereits in deinem Callback, du musst sie nur noch ausgeben:
CodeAlles anzeigenforward pWBB4_Callback(action, index, playerid, status, response[]); public pWBB4_Callback(action, index, playerid, status, response[]) { if ( action == pWBB4_ACTION_WBBADDTOGROUPS ) { if ( status == 1 ) { print("Gruppen erhalten!"); } else { printf("Leider ist ein Fehler aufgetreten :( [status: %d]", status); } } return 1; }
Danke, hab ich eingefügt. Ich bekomme Status 403. Heißt irgendwas hat keine Rechte?
Laut GitHub Wiki (https://github.com/derpierre65/pWBB4/wiki/WBB_AddToGroups) gibt es als Rückgabe für die Variable "status" 4 Optionen, vielleicht lässt du dir zusätzlich die Variable ausgeben, damit du weißt ob der User vielleicht bereits existiert oder er die Gruppen schon hat.
Danke, wie genau frage ich den Status ab?
Alles klar, danke trotzdem.
Weil ich gerne Server, Forum und TS Rechte gesynct hätte.
MfG