CS 1.6 soll ja auch aus Pawn sein.
Beiträge von maddinat0r
-
-
Freu mich schon aufs nächste php-Tutorial, sind wirklich erste Klasse
-
TXDEDAD[playerid][TD_Medalie[0]]=TextDrawCreate(314.000000,150.000000,"Box2");
//Zeile 745 : error 028: invalid subscript (not an array or too many subscripts): "TD_Medalie"
War eigentlich ein Vorschlag auf deinen Error, aber naja. -
Deine Zeile:
TXDEDAD[playerid][TD_Medalie[0]]
Mein Vorschlag:
TXDEDAD[playerid][TD_Medalie][0] -
Teile sie einfach auf.
Die erste Hälfte der Zeile machst du mit format (sagen wir mit der Variable 'string1') und die zweite Hälfte genaus so (Variable 'string2').
Danach machst du auch wieder format und packst die 2 Strings zusammen.
Würde ca. so aussehen:
format(string1,sizeof(string1),"Level: %d Geschlecht: %s",Level,Geschlecht);
format(string2,sizeof(string2),"Alter: %d, Herkunft: %s",Alter,Herkunft);
format(string,sizeof(string),"%s\n%s",string1,string2); -
Bei unserer Schule steht in der Hausordnung nach einer Woche, aber meistens geben sie es nach 3 Tagen zurück (und meistens holen es sich die Schüler wieder ab, sollten
aber die Erziehungsberechtigten laut Hausordnung).
Schau einfach in der Hausordnung deiner Schule nach. -
Ein simpler Fehler, es muss ein '!' vor 'strcmp', und das immer, wenn du strings vergleichen willst.
Denn wenn beide Strings gleich sind, returnt 'strcmp' 0, deshalb muss auch ein '!' vor strcmp hin. -
Nicht allzu weit, hatte noch wichtigere Dinge zu erledigen.
Ich arbeite jetzt daran weiter. -
Hast du in der Tabelle den Dateityp von 'Skin' auch richtig definiert?
-
Du hast nur 10 Skins angegeben, hast aber 11 deklariert (es fehlt ein Skin).
Außerdem sollte das '[1]' weg. -
Versuchs mal so:
new skin = GetPlayerSkin(playerid);
mysql_SetInt("accounts", "Skin", skin, "Name", SpielerInfo[playerid][pName]); -
Ich schau mir erst gar nicht dieses Filterscript an, wo bleibt den sonst die Herausforderung?
Außerdem möcht ich noch mehr Sachen releasen (und zwar hier im deutschen SA-MP Forum). -
Deshalb musst du ja auch die Velocity vorher speichern und dann wieder setzen.
Es gab mal ein Fliterscript, wo man mit den Numpad-Tasten sein Fahrzeug im Flug verwandeln konnte.
Wenn ichs finde, editiere ich den Post mit dem Link, sollte ganz nützlich sein.//Edit:
Gefunden
Ist aus dem englischen SA-MP Forum. -
Ich arbeite grade dran, nen funktionsfähigen Tempomaten zu machen
Ist schwieriger als gedacht, die Lenkung hinzukriegen.
Aber ich schaff das schon irgendwie -
1. den Timer rauslöschen, OnPlayerUpdate ist ein Standard-Callback.
2.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys & KEY_ACTION)
{
if(Tempomat[playerid] == 0)
{
new Float:vspeed[3];
if(!IsPlayerInAnyVehicle(playerid)) return 0;
SetPVarInt(playerid,"VehID",GetPlayerVehicleID(playerid));
GetVehicleVelocity(GetPlayerVehicleID(playerid),vspeed[0],vspeed[1],vspeed[2]);
SetPVarFloat(playerid,"vspeed_x",vspeed[0]);
SetPVarFloat(playerid,"vspeed_y",vspeed[1]);
Tempomat[playerid] = 1;
SetPVarInt(playerid,"temp",1);
}
else
{
Tempomat[playerid] = 0
SetPVarInt(playerid,"temp",0);
}
}
return 1;
}
Bei Tastenabfragen NIE mit '==' abfragen sondern mit '&'!
Du solltest die PVar "temp" auch auf 0 setzen, du hast ja sicher gesehen,
dass die eine nicht allzu kleine Rolle bei OnPlayerUpdate spielt.//Edit:
Tastenabfragen werden zwar schon mit '==' ingame funktionieren, aber
wenn man diese Taste in Kombination mit einer anderen Taste drückt wird der Code
nicht abgerufen, weil er ja nur aufgerufen wird, wenn auch wirklich NUR diese Taste gedrückt wird.
Wenn du jedoch mit '&' abfrägst, "sucht" er sozusagen in der Variable nach der Taste. -
Eigentlich alles vom Fahrzeug abfragen was man nur abfragen kann, also Position, Rotation, Angle, Velocity.
Dann das Auto löschen, neues Auto erstellen, den Spieler in das Auto setzen und die Velocity setzen. -
So, Bugs wurden gefixt (also der 1. und 4. Punkt ist erledigt).
Jetzt setze ich mich daran, es dynamischer zu machen (also Entgeld für jeden Job anpassbar, mehrere Autos, usw.).
Außerdem hat jetzt jeder Befehl ein "j" als Anfangsbuchstaben.
Und das mit den mehreren Autos mache ich genau so wie Artus es gepostet hat. -
SendCommand geht nich , es ist NUR für NPC's bestimmt und kann NUR in den NPC-Scripts (Die im npcmodes-Ordner) verwendet werden.
-
Parameter werden wohl nicht gehen, wird wohl nur gehen, wenn man eine best. Geschwindigkeit erreicht hat
und den Befehl tippt.
dcmd_temp(playerid,params[])
{
#pragma unused params
new Float:vspeed[3];
if(!IsPlayerInAnyVehicle(playerid)) return 0;
SetPVarInt(playerid,"VehID",GetPlayerVehicleID(playerid));
GetVehicleVelocity(GetPlayerVehicleID(playerid),vspeed[0],vspeed[1],vspeed[2]);
SetPVarFloat(playerid,"vspeed_x",vspeed[0]);
SetPVarFloat(playerid,"vspeed_y",vspeed[1]);
SetPVarInt(playerid,"temp",1);
return 1;
}public OnPlayerUpdate(playerid)
{
if(IsPlayerInAnyVehicle(playerid) && (GetPVarInt(playerid,"temp") == 1))
{
SetVehicleVelocity(GetPVarInt(playerid,"VehID"),GetPVarFloat(playerid,"vspeed_x"),GetPVarFloat(playerid,"vspeed_y"),0.0);
}
return 1;
}
In der Theorie würde es vielleicht so aussehen.
Man müsste dann nur bei OnPlayerKeyStateChange abfragen, ob der Spieler abbiegt und wenn ja, einfach die PVar's neu setzen. -
Also, erstmal die ganzen IsPlayerInRangeOfPoint's in ein Public packen:
Oben im Script due Publics definieren:
forward InteriorEnter(playerid);
forward InteriorExit(playerid);Dann die Publics schreiben:
public InteriorEnter(playerid)
{
if(IsPlayerInRangeOfPoint(playerid,3.0,-2424.8130,337.2221,37.0019))
{
SetPlayerPos(playerid,271.884979,306.631988,999.148437);
SetPlayerInterior(playerid,2);
return 1;
}
if(IsPlayerInRangeOfPoint(playerid,3.0,-1883.1982,865.5228,35.1719)) //Zip
{
SetPlayerPos(playerid,161.391006,-93.159156,1001.804687);
SetPlayerInterior(playerid,18);
return 1;
}
else
if(IsPlayerInRangeOfPoint(playerid,3.0,-2026.4840,-101.0355,35.1641)) //Fahrschule
{
SetPlayerPos(playerid,-2029.798339,-106.675910,1035.171875);
SetPlayerInterior(playerid,3);
return 1;
}
else
if(IsPlayerInRangeOfPoint(playerid,3.0,-2765.5942,375.7597,6.3359)) //Arbeitsamt
{
SetPlayerPos(playerid,384.808624,173.804992,1008.382812);
SetPlayerInterior(playerid,3);
return 1;
}
else
if(IsPlayerInRangeOfPoint(playerid,3.0,-2442.7295,753.9190,35.1719)) //24/7 Eingang
{
SetPlayerPos(playerid,6.091179,-29.271898,1003.549438);
SetPlayerInterior(playerid,10);
return 1;
}
else
if(IsPlayerInRangeOfPoint(playerid,3.0,-2650.0889,376.1048,6.1563)) //Bank groß
{
SetPlayerPos(playerid,833.269775,10.588416,1004.179687);
SetPlayerInterior(playerid,3);
return 1;
}
else
if(IsPlayerInRangeOfPoint(playerid,3.0,-1816.4424,617.5515,35.1719)) //Clucking
{
SetPlayerPos(playerid,369.579528,-4.487291,1001.858886);
SetPlayerInterior(playerid,9);
return 1;
}
else
if(IsPlayerInRangeOfPoint(playerid,3.0,1319.2622,1250.9506,10.8203)||IsPlayerInRangeOfPoint(playerid,3.0,1685.6200,-2334.0400,13.5469)||IsPlayerInRangeOfPoint(playerid,3.0,-1262.1936,40.0042,14.1392)) //Flughafen
{
SetPlayerPos(playerid,-1827.147338,7.207417,1061.143554);
SetPlayerInterior(playerid,14);
return 1;
}
else
SendClientMessage(playerid,ROT,"Hier befindet sich kein Eingang!");
return 1;
}
public InteriorExit(playerid)
{
if(IsPlayerInRangeOfPoint(playerid,3.0,271.884979,306.631988,999.148437))//Hotel
{
SetPlayerPos(playerid,-2424.8130,337.2221,37.0019);
SetPlayerInterior(playerid,0);
return 1;
}
if(IsPlayerInRangeOfPoint(playerid,3.0,161.391006,-93.159156,1001.804687)) //Zip
{
SetPlayerPos(playerid,-1883.1982,865.5228,35.1719);
SetPlayerInterior(playerid,0);
return 1;
}
else
if(IsPlayerInRangeOfPoint(playerid,3.0,-2029.798339,-106.675910,1035.171875)) //Fahrschule
{
SetPlayerPos(playerid,-2026.4840,-101.0355,35.1641);
SetPlayerInterior(playerid,0);
return 1;
}
else
if(IsPlayerInRangeOfPoint(playerid,3.0,384.808624,173.804992,1008.382812)) //Arbeitsamt
{
SetPlayerPos(playerid,-2765.5942,375.7597,6.3359);
SetPlayerInterior(playerid,0);
return 1;
}
else
if(IsPlayerInRangeOfPoint(playerid,3.0,6.091179,-29.271898,1003.549438)) //24/7 Eingang
{
SetPlayerPos(playerid,-2442.7295,753.9190,35.1719);
SetPlayerInterior(playerid,0);
return 1;
}
else
if(IsPlayerInRangeOfPoint(playerid,3.0,833.269775,10.588416,1004.179687)) //Bank groß
{
SetPlayerPos(playerid,-2650.0889,376.1048,6.1563);
SetPlayerInterior(playerid,0);
return 1;
}
else
if(IsPlayerInRangeOfPoint(playerid,3.0,369.579528,-4.487291,1001.858886)) //Clucking
{
SetPlayerPos(playerid,-1816.4424,617.5515,35.1719);
SetPlayerInterior(playerid,0);
return 1;
}
else
SendClientMessage(playerid,ROT,"Hier befindet sich kein Ausgang!");
return 1;}
Und letztendlich den Rest mit den Tasten unter OnPlayerKeyStateChange:
if((newkeys & KEY_SECONDARY_ATTACK) && !(IsPlayerInAnyVehicle(playerid)))
{
if(GetPlayerInterior(playerid) == 0) InteriorEnter(playerid);
else InteriorExit(playerid);
}
Code ist aus dem Stegreif, sollte was nicht funktionieren, bescheid sagen.