[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Kann ich das auch irgendwie abfragen das was passiert, wenn ich auf speichern drücke?
Na klar
mfg.

-
wie frage ich ab ob irgend ein Spieler in einem Auto sitzt
-
wie frage ich ab ob irgend ein Spieler in einem Auto sitzt
if(IsPlayerInAnyVehicle(playerid)){
}
//EDIT:
Das fragt dich selber ab!
-
Hey,
if(IsPlayerInAnyVehicle(playerid)){
} -
wie frage ich ab ob irgend ein Spieler in einem Auto sitzt
Nutze:
stock IsAnyPlayerInVehicle(vehicleid)
{
for(new i=0; i<MAX_PLAYERS; i++) if(GetPlayerVehicleID(i) == vehicleid) return 1;
return 0;
}Und dann:
if(IsAnyPlayerInVehicle(vehicleid)) //Ein Spieler ist in der vehicleidUnd wenn du abfragen willst, ob im ganzen Server niemand in irgendeinem Fahrzeug ist:
stock IsAnyPlayerInAnyVehicle()
{
for(new i=0; i<MAX_PLAYERS; i++) if(GetPlayerVehicleID(i) != 0) return 1;
return 0;
}if(IsAnyPlayerInAnyVehicle()) //Mindestens ein Spieler ist in einem Fahrzeug
-
Fehler?

stock CreateTables()
{
new query[1500];
strcat(query,"CREATE TABLE IF NOT EXISTS `Accounts` (`ID` int(11) NOT NULL AUTO_INCREMENT, `pName` varchar(24), `pPasswort` varchar(24), `pAlter` int(2), `pGeburtsdatum` varchar(20), `pGeschlecht` int(2), `pAdminlevel` int(10), `pFraktion` int(11), `pFrakLeader` int(11),");
strcat(query,"`pFrakRang` int(11), `pFrakSkin` int(11), `pFrakDuty` int(11), `pBanned` int(12), `pBargeld` int(11), `pKontoguthaben` int(11), `pLastLogin` varchar(60), `pRegDatum` varchar(60), `pWarns` int(3), `pLeben` float(10), PRIMARY KEY (`ID`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;","","");
strcat(query,"CREATE TABLE IF NOT EXISTS `Banned` (`IP` varchar(16) NOT NULL, `Name` varchar(24) NOT NULL, `Grund` varchar(126) NOT NULL, `Admin` varchar(24) NOT NULL, `Zeit` int(25) NOT NULL, `Datum` date NOT NULL, `Uhrzeit` time NOT NULL, PRIMARY KEY (`IP`))",false,"","");
strcat(query,"CREATE TABLE IF NOT EXISTS `FraktionsVerwaltung` (`ID` int(11) NOT NULL AUTO_INCREMENT, `Leader` varchar(24), `Members` int(11), `Kasse` int(11), `Skins` int(11), `Gehalt` int(11), `FrakLimit` int(11), PRIMARY KEY (`ID`))",false,"","");
mysql_function_query(DBHandle,query,false,"","");
strdel(query,0,sizeof(query));
return 1;
}Selfmade.p(836) : error 035: argument type mismatch (argument 3)
Selfmade.p(837) : warning 202: number of arguments does not match definition
Selfmade.p(837) : warning 202: number of arguments does not match definition
Selfmade.p(838) : warning 202: number of arguments does not match definition
Selfmade.p(838) : warning 202: number of arguments does not match definition -
Das Zeug ganz hinten an den strcat's ist falsch.
stock CreateTables()
{
new query[1500];
strcat(query,"CREATE TABLE IF NOT EXISTS `Accounts` (`ID` int(11) NOT NULL AUTO_INCREMENT, `pName` varchar(24), `pPasswort` varchar(24), `pAlter` int(2), `pGeburtsdatum` varchar(20), `pGeschlecht` int(2), `pAdminlevel` int(10), `pFraktion` int(11), `pFrakLeader` int(11),");
strcat(query,"`pFrakRang` int(11), `pFrakSkin` int(11), `pFrakDuty` int(11), `pBanned` int(12), `pBargeld` int(11), `pKontoguthaben` int(11), `pLastLogin` varchar(60), `pRegDatum` varchar(60), `pWarns` int(3), `pLeben` float(10), PRIMARY KEY (`ID`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
strcat(query,"CREATE TABLE IF NOT EXISTS `Banned` (`IP` varchar(16) NOT NULL, `Name` varchar(24) NOT NULL, `Grund` varchar(126) NOT NULL, `Admin` varchar(24) NOT NULL, `Zeit` int(25) NOT NULL, `Datum` date NOT NULL, `Uhrzeit` time NOT NULL, PRIMARY KEY (`IP`))");
strcat(query,"CREATE TABLE IF NOT EXISTS `FraktionsVerwaltung` (`ID` int(11) NOT NULL AUTO_INCREMENT, `Leader` varchar(24), `Members` int(11), `Kasse` int(11), `Skins` int(11), `Gehalt` int(11), `FrakLimit` int(11), PRIMARY KEY (`ID`))");
mysql_function_query(DBHandle,query,false,"","");
strdel(query,0,sizeof(query));
return 1;
} -
Jeffry: Jetzt startet er en Server nicht

Spoiler anzeigen [18:58:51] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[18:58:51] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[18:58:51] [DEBUG] CMySQLConnection::Connect - connection was successful
[18:58:51] [DEBUG] CMySQLConnection::Connect - connection was successful
[18:58:51] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[18:58:51] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[18:58:51] [DEBUG] CMySQLQuery::Execute[] - starting query execution
[18:58:51] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE IF NOT EXISTS `Banned` (`PP` varchar(16) NOT NULL, `Name` varchar(2' at line 1
[18:58:51] [DEBUG] CMySQLQuery::Execute[] - error will be triggered in OnQueryError
[18:58:51] [DEBUG] Calling callback "OnQueryError"..
-
Zeig uns mal die Zeile, in der du die Tabelle "Banned" erstellst.
-
-
IP kann kein Primary Key ohne Auto Increment sein. Nimm den Primary Key am Ende raus oder füg ne ID Spalte hinzu, mit AI + PK
-
Du musst einzelnt ein query ausführen , da das Plugin mit mehreren Befehlen nicht zurechtkommt.
stock CreateTables()
{
new query[1500];
strcat(query,"CREATE TABLE IF NOT EXISTS `Accounts` (`ID` int(11) NOT NULL AUTO_INCREMENT, `pName` varchar(24), `pPasswort` varchar(24), `pAlter` int(2), `pGeburtsdatum` varchar(20), `pGeschlecht` int(2), `pAdminlevel` int(10), `pFraktion` int(11), `pFrakLeader` int(11),");
strcat(query,"`pFrakRang` int(11), `pFrakSkin` int(11), `pFrakDuty` int(11), `pBanned` int(12), `pBargeld` int(11), `pKontoguthaben` int(11), `pLastLogin` varchar(60), `pRegDatum` varchar(60), `pWarns` int(3), `pLeben` float(10), PRIMARY KEY (`ID`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
mysql_function_query(DBHandle,query,false,"","");
mysql_function_query(DBHandle,"CREATE TABLE IF NOT EXISTS `Banned` (`IP` varchar(16) NOT NULL, `Name` varchar(24) NOT NULL, `Grund` varchar(126) NOT NULL, `Admin` varchar(24) NOT NULL, `Zeit` int(25) NOT NULL, `Datum` date NOT NULL, `Uhrzeit` time NOT NULL, PRIMARY KEY (`IP`))",false,"","");
mysql_function_query(DBHandle,"CREATE TABLE IF NOT EXISTS `FraktionsVerwaltung` (`ID` int(11) NOT NULL AUTO_INCREMENT, `Leader` varchar(24), `Members` int(11), `Kasse` int(11), `Skins` int(11), `Gehalt` int(11), `FrakLimit` int(11), PRIMARY KEY (`ID`))",false,"","");
return 1;
}den string musst du mit strdel nicht leeren, da bei lokalen variablen sich der Speicher dynamisch genommen und wieder freigegeben wird.
//edit
Nebensächlich jedoch anzumerken ist das du mit ; dafür sorgst das ein SQL Befehl damit abgeschlossen ist das ist nach , PRIMARY KEY (`IP`)) nicht der Fall, sowas wird meist auch noch als Syntaxfehler erkannt.
-
Wie kann ich ein Car dispawnen lassen?
also ich habe eines erstellt und möchte es per if Abfrage löschen
ccar[4] = CreateVehicle(598,1882.2500,957.2402,10.5658,269.0689,0,1,-1); -
SetVehicleToRespawn(vehicleid);
Die if-Abfrage kannst du dir ja selbst bauen, und mit der oben genannten Funktion respawnen. -
Mein ADuty Befehl bugt ein wenig... Wenn ich aus dem Dienst gehe sterbe ich?
ocmd:aduty(playerid,params[])
{
new Float:Leben, Float:Ruestung, str[128];
if(sInfo[playerid][pEingeloggt] == 0) return SendClientMessage(playerid, GRAU, LOGINERROR);
if(sInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, GRAU, ADMERROR);
GetPlayerArmour(playerid,Ruestung);
GetPlayerHealth(playerid,Leben);
switch(GetPVarInt(playerid, "ADUTY"))
{
case 0:
{
SetPlayerHealth(playerid, FLOAT_INFINITY);
SetPlayerArmour(playerid, 100);
format(str,sizeof(str), "%s hat den Admindienst betreten.", SpielerName(playerid));
SendClientMessageToAll(ADMIN, str);
SetPVarInt(playerid, "ADUTY", 1);
}
case 1:
{
SetPlayerArmour(playerid,Ruestung);
SetPlayerHealth(playerid,Leben);
format(str,sizeof(str), "%s hat den Admindienst verlassen.", SpielerName(playerid));
SetPVarInt(playerid, "ADUTY", 0);
}
}
return 1;
}Ich habs auch auch so probiert:
ocmd:aduty(playerid,params[])
{
new Float:Leben, Float:Ruestung, str[128];
if(sInfo[playerid][pEingeloggt] == 0) return SendClientMessage(playerid, GRAU, LOGINERROR);
if(sInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, GRAU, ADMERROR);
switch(GetPVarInt(playerid, "ADUTY"))
{
case 0:
{
GetPlayerArmour(playerid,Ruestung);
GetPlayerHealth(playerid,Leben);
SetPlayerHealth(playerid, FLOAT_INFINITY);
SetPlayerArmour(playerid, 100);
format(str,sizeof(str), "%s hat den Admindienst betreten.", SpielerName(playerid));
SendClientMessageToAll(ADMIN, str);
SetPVarInt(playerid, "ADUTY", 1);
}
case 1:
{
SetPlayerArmour(playerid,Ruestung);
SetPlayerHealth(playerid,Leben);
format(str,sizeof(str), "%s hat den Admindienst verlassen.", SpielerName(playerid));
SetPVarInt(playerid, "ADUTY", 0);
}
}
return 1;
} -
SetPlayerHealth(playerid, FLOAT_INFINITY);
zu:
SetPlayerHealth(playerid, 999999.0); -
SetVehicleToRespawn(vehicleid);
Ich möchte es nicht neu spawnen sondern weg haben -
Ich möchte es nicht neu spawnen sondern weg haben
Dann einfach DestroyVehicle
-
Ich möchte das wenn mehr als einer auf dem server ist, also min. 2 ein Timer startet, aber wo muss das hin? unter OnGameModeInit?
