←  Problemy z pluginami

AMXX.pl: Support AMX Mod X i SourceMod

»

Plugin speedspeed buguje freeztime na JB b...

  • +
  • -
Panda - zdjęcie Panda 24.07.2014

Witam! Na serwerze zainstalowałem JB Cypisa 1.0.7o, mam tam też zainstalowany plugin speespeed.amxx, niestety musiałem go wyłączyć ponieważ przez niego niema freeztime'u na początku rundy. Chciałbym się dowiedzieć czy jest w ogóle możliwość edycji tego pluginu tak aby nie stwarzał w/w problemu, jeśli tak prosiłbym o edycje. Z góry dziękuje i pozdrawiam!

Odpowiedz

  • +
  • -
Drago36 - zdjęcie Drago36 24.07.2014

speespeed.amxx - podeślij plik .sma tego pluginu

Odpowiedz

  • +
  • -
Panda - zdjęcie Panda 24.07.2014

Ehh zapomniałem, proszę:

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define PLUGIN "SpeedSpeed"
#define VERSION "1.0"
#define AUTHOR "R3X"

new gfwUpdate;

new const Float:gfCSSpeeds[]={
	000.0,
	250.0, 000.0, 260.0, 250.0, 240.0,
	250.0, 250.0, 240.0, 250.0, 250.0,               
	250.0, 250.0, 210.0, 240.0, 240.0,    
	250.0, 250.0, 210.0, 250.0, 220.0,              
	230.0, 230.0, 250.0, 210.0, 250.0,            
	250.0, 235.0, 221.0, 250.0, 245.0
}

new giUserWeapon[33];
new Float:gfUserSpeed[33];
new Float:gfOffset[33];

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_event("CurWeapon", "eventCurWeapon", "be", "1=1");
	
	gfwUpdate = CreateMultiForward("speed_update", ET_CONTINUE, FP_CELL, FP_CELL);
}
public plugin_natives(){
	register_library("SpeedSpeed");
	
	register_native("add_user_speed", "_add_user_speed");
	register_native("update_user_speed", "_update_user_speed");
}

public eventCurWeapon(id){
	new wid = read_data(2);
	giUserWeapon[id] = wid;
	updateSpeed(id, wid);
}

public updateSpeed(id, wid){
	gfUserSpeed[id] = gfCSSpeeds[wid];
	
	gfOffset[id] = 0.0;
	
	new ret;
	ExecuteForward(gfwUpdate, ret, id, wid);

	if(ret == 0)
		gfUserSpeed[id] += gfOffset[id];
		
	__set_user_speed(id, gfUserSpeed[id]);
}
stock __set_user_speed(id, Float:fSpeed = -1.0){
	if(fSpeed < 0.0){
		new wid = get_user_weapon(id);
		fSpeed = gfCSSpeeds[wid];
	}
	
	set_pev(id, pev_maxspeed, fSpeed);
	client_cmd(id, "cl_forwardspeed %.1f", fSpeed);
	client_cmd(id, "cl_backspeed %.1f", fSpeed);
	client_cmd(id, "cl_sidespeed %.1f", fSpeed);
}
public _add_user_speed(plugin, params){
	if(params < 2){
		log_error(10, "Bad parameter number");
		return 0;
	}
	new id = get_param(1);
	if(!is_user_connected(id))
		return 0;
	new Float:fOffset = get_param_f(2);
	gfOffset[id] += fOffset;
	return 1;
}
public _update_user_speed(plugin, params){
	if(params < 1){
		log_error(10, "Bad parameter number");
		return 0;
	}
	new id = get_param(1);
	if(!is_user_connected(id))
		return 0;
	updateSpeed(id, giUserWeapon[id]);
	return 1;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/

Załączone pliki

Odpowiedz

  • +
  • -
Drago36 - zdjęcie Drago36 25.07.2014

Przetestuj

Spoiler
Odpowiedz

  • +
  • -
Panda - zdjęcie Panda 25.07.2014

Freeztime działa ale gdy nadal trwa i użyje sprintu mogę normalnie chodzić a inni zamrożeni. Obstawiam że problem jest w drugim pluginie:

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <speedspeed>
#include <hamsandwich>

#define PLUGIN "Sprinting"
#define VERSION "1.0"
#define AUTHOR "R3X"

new const Float:fSprintingTime = 5.0;
new const Float:fRestingTime = 10.0;
new const Float:fSpeedUp = 150.0;

new Float:gfSpeedOffset[33];

new giWid[33];
new Float:gfSprint[33];
new Float:gfRest[33];

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_event("CurWeapon", "eventCurWeapon", "be", "1=1");
	RegisterHam(Ham_Spawn, "player", "fwHamSpawn", 1);
	register_forward(FM_PlayerPreThink, "fwPlayerPretThink", 1);
}

//SpeedSpeed
public speed_update(id){
	add_user_speed(id, gfSpeedOffset[id]);
}

public eventSpeedUp(id){
	new Float:fNow = get_gametime();
	
	if(fNow < gfRest[id]){
		set_hudmessage(255, 255, 255, -1.0, 0.3, 0, 0.0, 2.0);
		show_hudmessage(id, "Odpocznij chwile")
		return;
	}

	gfSpeedOffset[id] = fSpeedUp;
	update_user_speed(id);
	
	gfSprint[id] = fNow + fSprintingTime;
	
	set_hudmessage(255, 255, 255, -1.0, 0.3, 0, 0.0, 2.0);
	show_hudmessage(id, "Sprint!")
}
public eventSpeedDown(id){
	gfSpeedOffset[id] = 0.0;
	update_user_speed(id);
	
	new Float:fNow = get_gametime();
	gfRest[id] =  fNow + fRestingTime;
	
	set_hudmessage(255, 255, 255, -1.0, 0.3, 0, 0.0, 2.0);
	show_hudmessage(id, "Tyla")
}

public fwHamSpawn(id)
	gfSpeedOffset[id] = 0.0;
	
public eventCurWeapon(id){
	new wid = read_data(2);
	giWid[id] = wid;
}
public fwPlayerPretThink(id){
	if(!is_user_alive(id) || !(get_user_flags(id) & ADMIN_LEVEL_A) || get_user_team(id)==1)
		return FMRES_IGNORED;
		
	new wid = giWid[id];
	new button = pev(id, pev_button) & IN_USE;
	new oldbuttons = pev(id, pev_oldbuttons)& IN_USE;
	
	if((button && !oldbuttons)){
		if(wid == CSW_KNIFE) 
			eventSpeedUp(id);
	}
	
	else if(gfSpeedOffset[id]){
		if((!button && oldbuttons) || wid != CSW_KNIFE || gfSprint[id] < get_gametime())
			eventSpeedDown(id);
	}
	
	
	return FMRES_IGNORED;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1250\\ uc1\\ deff0\\ deflang1045\\ deflangfe1045{\\ fonttbl{\\ f0 Tahoma;}}\n\\ f0{\\ colortbl;}{\\ *\\ generator Wine Riched20 2.0.????;}\\ pard\\ sl-240\\ slmult1\\ li0\\ fi0\\ ri0\\ sa0\\ sb0\\ s-1\\ cfpat0\\ cbpat0\n\\ par}
*/

Jeśli będzie trzeba to założę nowy temat.

Odpowiedz

  • +
  • -
Drago36 - zdjęcie Drago36 25.07.2014

got

Spoiler
Odpowiedz

  • +
  • -
Panda - zdjęcie Panda 25.07.2014

Niestety teraz w ogóle nie działa sprint.

Odpowiedz