03.05.2010, 17:29
попробуй
Originally Posted by [JIeXa
]
не будет |
Originally Posted by [JIeXa
]
нет... там стоит return, поэтому он хоть как завершится и вообще, лучше не использовать эту фигню(рекурсию), чтоб проблем не было |
stock HexToInt(string[]) {
if (string[0]==0) return 0;
new i;
new cur=1;
new res=0;
for (i=strlen(string);i>0;i--) {
if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
cur=cur*16;
}
return res;
}
stock RGBAToHex( red, green, blue, alpha )
return (red * 16777216) + (green * 65536) + (blue * 256) + alpha;
Показывает ник убийцы / хп / броню /оружие с которого убил/ и расстояние
#include <a_samp>
#define FILTERSCRIPT
#define DIALOG_RULES 2
#pragma tabsize 0
forward Float:GetDistanceBetweenPlayers(p1,p2);
stock Float:GetDistanceBetweenPlayers(p1,p2)
{
new Float:x11,Float:y11,Float:z11,Float:x3,Float:y3,Float:z3;
if (!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
{
return -1.00;
}
GetPlayerPos(p1,x11,y11,z11);
GetPlayerPos(p2,x3,y3,z3);
return floatsqroot(floatpower(floatabs(floatsub(x3,x11)),2)+floatpower(floatabs(floatsub(y3,y11)),2)+floatpower(floatabs(floatsub(z3,z11)),2));
}
public OnPlayerDeath(playerid, killerid, reason)
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i) && i != playerid)
{
new deathreason[20];
new PlayerNamea[30];
new string[256];
new Float:h;
new Float:a;
new n[30];
new msg[150];
GetPlayerHealth(killerid,h);
GetPlayerArmour(killerid,a);
GetPlayerName(killerid,n,30);
GetWeaponName(reason,deathreason, 20);
//if(killerid != INVALID_PLAYER_ID && reason != 255)
//{
//}
//else{
format(PlayerNamea,sizeof PlayerNamea," Инфо ",PlayerNamea);
msg="У вашего убийцы [%s] \nосталось [%d] XP \n и [%d] AR\n у бил вас с[%s]\n с расстояния [%d].";
format(string,sizeof string,msg,n,floatround(h),floatround(a),deathreason,floatround(GetDistanceBetweenPlayers(i,playerid)));
ShowPlayerDialog(playerid,DIALOG_RULES,0,PlayerNamea,string,"OK","ОТМЕНА");
//}
}
}
return 1;
}
stock Float:GetAngleToPoint(Float:x1, Float:y1, Float:x2, Float:y2)
{
new
Float:Angle;
Angle = atan2(y2 - y1, x2 - x1) + 270;
return Angle < 360 ? Angle : Angle - 360;
}
stock GetPlayerCameraLookAt(playerid, &Float:X, &Float:Y, &Float:Z)
{
new
Float:CamX, Float:CamY, Float:CamZ,
Float:FrX, Float:FrY, Float:FrZ;
GetPlayerCameraPos(playerid, CamX, CamY, CamZ);
GetPlayerCameraFrontVector(playerid, FrX, FrY, FrZ);
X = FrX + CamX;
Y = FrY + CamY;
Z = FrZ + CamZ;
}
#define MAX_PASWORD_LENGTH 30 stock GeneratePassword(passlength=8) { new tmp[MAX_PASWORD_LENGTH]; if(passlength <= MAX_PASWORD_LENGTH) { for(new i = 0; i < passlength; i++) { new mode = random(3); if(mode == 0) tmp[i] = random('z' - 'a') + 'a'; else if(mode == 1) tmp[i] = toupper(random('z' - 'a') + 'a'); else if(mode == 2) valstr(tmp[i],random(9)); } } return tmp; }
print(GeneratePassword()); print(GeneratePassword(10));
stock GetNeededWord(number,word1[],word2[],word3[]) // by Romanius { new ostatok = number % 100; new out[50]; if((ostatok > 10) && (ostatok < 20)) strcat(out,word3); else { switch(ostatok % 10) { case 0: strcat(out,word3); case 1: strcat(out,word1); case 2..4: strcat(out,word2); case 5..9: strcat(out,word3); default: strcat(out,word1); } } return out; }
new conectedplayers = 0; public OnPlayerConnect(playerid) { conectedplayers++; format(str,sizeof(str),"На сервере %d %s",conectedplayers,GetNeededWord(conectedplayers,"игрок","игрока","игроков")); SendClientMessageToAll(0xFFFFFFAA,str); } public OnPlayerDisconnect(playerid) { conectedplayers--; format(str,sizeof(str),"На сервере осталось %d %s",conectedplayers,GetNeededWord(conectedplayers,"игрок","игрока","игроков")); SendClientMessageToAll(0xFFFFFFAA,str); }
stock GetNeededWordEx(number,word[])
{
new ostatok = number % 100;
new out[50];
strcat(out,word);
if((ostatok > 10) && (ostatok < 20)) strcat(out,"ов");
else
{
switch(ostatok % 10)
{
case 0: strcat(out,"ов");
case 2..4: strcat(out,"а");
case 5..9: strcat(out,"ов");
}
}
return out;
}
одно я могу сказать, точно про обратный отсчет, его надо русскими буквами писать, но по-белорусски (: тры, дуа, адын, ПОНЕСЛАСЯ |
stock Freeze(playerid, value){
switch(value){
case 0:ApplyAnimation(playerid,"GYMNASIUM","Pedals_fast",4.1,0,1,1,1,value);
case 1:ApplyAnimation(playerid,"GYMNASIUM","Pedals_fast",4.1,0,1,1,1,value);}
return 1;}
Originally Posted by s3ap
единственный обход, но и его можно заплатать
|
Originally Posted by stels
А именно - закрыть все машины для игрока
|
А именно - закрыть все машины для игрока Cheesy |
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } |
Originally Posted by s3ap
Прокатит. Т.к. он не побежит пробывать открывать. Пробует он только когда на пассажирское место.
И if(ispassenger){new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); SetPlayerPos(playerid, X, Y, Z); Freeze(playerid, true);} |
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { if(IsPlayerFreezed(playerid)){ TogglePlayerControllable(playerid,0); TogglePlayerControllable(playerid,1); } return 1; }