Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Diablo 2 > Diablo 2 Programming
You last visited: Today at 13:27

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Frage: Wie schreibe ich ein Skript folgendermaßen um...

Discussion on Frage: Wie schreibe ich ein Skript folgendermaßen um... within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2011
Posts: 11
Received Thanks: 5
Frage: Wie schreibe ich ein Skript folgendermaßen um...

Hi,

ich möchte das nachfolgende CowSkript wie folgt ändern:

1. Skript:

Code:
// D2NT Cow script
// Version 1.4.1
//--- CONFIG ---
const _NTR_FAIL_CHECKS = 25; // Number of failed teleports before script ends. Ex. Edge of map causes a fail teleport. DEFAULT: 25
const _NTR_PRE_EVERY = 40; // Number of seconds before precasting again. -1 for never. DEFAULT: 40
const _NTR_CHEST_AND_ROCKS = true; // Open chest and rocks. DEFAULT: true
//--- END ---

const _NTR_STRING_PORTAL = GetLocaleString(3226);

function NTMain(){

	Include("libs/common/NTCommon.ntl");
	NTC_IncludeLibs();
	NTC_IncludeConfig("NTBot/char_configs");

	NT_LoadConfig();
	NTSI_LoadNIPFiles("NTBot/item_configs");

	NTA_Initialize();

	if(!NTTM_CheckAct()){
		NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
		return;
	}
	NTTMGR_TownManager();
	var _wirtbody, _cube, _leg, _portal, _stash, _items, i, _npc, prearea;
	for (i = 0; i < 10; i++){//need to add a check for leg with me.getitems also
		_leg = NTC_FindUnit(NTC_UNIT_ITEM, 88);
		if (_leg)
		break;
	}
	//Checks If you already have the leg
	_items = me.GetItems();
	for (i = 0; i < _items.length;i++){
		if (_items[i].classid == 88) {
			Print ("Already Got Leg");
			_leg = _items[i];
		}
	}
	if (!_leg){
		if(!NTTM_TownMove("waypoint")){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
			return;
		}
		if(!NTM_TakeWaypoint(4)){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
			return;
		}
		NTP_DoPrecast(true);
		if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_MONSTER, 737, 10, 10)){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToPresetUnit()");
			return;
		}
		if(NTConfig_KillRakanishuCows){	
			if(NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe)){
				NTTMGR_VisitTown();
			}
			if(NTA_KillMonster(GetLocaleString(2872))){	
				if(NTConfig_ClearPosition)
				NTA_ClearPosition();
				if(NTConfig_IdInField){
					if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
						NT_FieldID(); 
					} // id in field add
				}
				NTSI_PickItems();
				if(NTConfig_IdInField){
					if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
						NT_FieldID(); 
					} // id in field add
				}				
			}
		}
		if(!NTM_UsePortal("Portal", 38)){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTM_UsePortal()");
			return;
		}
		if(NTConfig_TristExtension){	
			if(!NTA_ClearLevel()){
				NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()");
			}
		}
		NTM_MoveTo(me.areaid, 25047, 5178);
		if(NTA_ClearPosition(10)){
			if(NTConfig_IdInField){
				if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
					NT_FieldID(); 
				} // id in field add
			}
			NTSI_PickItems();
			if(NTConfig_IdInField){
				if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
					NT_FieldID(); 
				} // id in field add
			}
		}
		_wirtbody = NTC_FindUnit(NTC_UNIT_OBJECT, 268);
		if(!_wirtbody){
			NTC_SendMsgToScript("NTBotGame.ntj", "Wirt's body not found.");
			return;
		}
		if(NTM_MoveTo(_wirtbody.areaid, _wirtbody.x+3, _wirtbody.y)){	
			if(NTC_OpenChest(_wirtbody)){
				NTC_PingDelay(500);
				for (i = 0; i < 10; i++){
					_leg = NTC_FindUnit(NTC_UNIT_ITEM, 88);
					if (_leg)
					break;
				}
				if(!NTT_CheckSpace(_leg.xsize, _leg.ysize)){
					_prearea = me.areaid	
					if(NTTM_CheckAct()){
						NTTMGR_TownManager(true);
						NTTM_TownMove("portalspot")
						NTM_UsePortal("BluePortal", _prearea)
					}
				}
				for (i = 0; i < 20; i++){	
					if ((i % 5) == 0){
						if (_leg.mode == 3 || _leg.mode == 5){
							if (NTC_ClearCursor())
							NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _leg);
						}
					}
					NTC_PingDelay(100);
					if (_leg.mode != 3 && _leg.mode != 5){
						Print(COLOR_4 + "Got Leg");
						NTC_PingDelay(200);
						break;
					}
				}
			}
		}
		if(!_leg){
			NTC_SendMsgToScript("NTBotGame.ntj", "No leg found.");
			return;
		}
		NTM_MakeTP(1);
		//NTM_UsePortal("BluePortal");
		//Print(COLOR_8 + " This is where the problem is?");
	}
	else{
		if(!NTT_CheckSpace(_leg.xsize, _leg.ysize)){
			_prearea = me.areaid;	
			if(NTTM_CheckAct()){
				NTTMGR_TownManager(true);
				NTTM_TownMove("portalspot")
				NTM_UsePortal("BluePortal", _prearea)
			}
		}
		for (i = 0; i < 20; i++){	
			if ((i % 5) == 0){
				if (_leg.mode == 3 || _leg.mode == 5){
					if (NTC_ClearCursor())
					NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _leg);
				}
			}
			NTC_PingDelay(100);
			if (_leg.mode != 3 && _leg.mode != 5){
				Print(COLOR_4 + "Who caries a leg around?");
				NTC_PingDelay(200);
				Print(COLOR_4 + "Dude, thats sick.");
				break;
			}
		}
	}
	if(NTCW_AlreadyTombs()){	
		if(!NTTM_CheckAct()){
			NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
			return;
		}
		NTTM_TownMove("akara");
		for(var i = 0 ; i < 10 ; i++){
			_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_AKARA);
			if(_npc)
			break;
		}
		if(_npc){	
			if(NTT_DoInteract(_npc)){
				if(NTT_DoTrade(_npc)){
					_NTR_DoID = NTT_CheckUnids();
					if(_NTR_DoID)
					NTTMGR_IDItems(_npc);
					NTT_FillTome(_npc, 1);
					NTT_FillTome(_npc, 0);
					NTT_SecondTomeTP(_npc, "tbk", 1);
					_portal = NTR_GetTP();
					if(!_portal){
						NTC_SendMsgToScript("NTBotGame.ntj", "No extra tome of townportal found.");
						return;
					}
				}
			}
			me.Cancel(1);
		}
	}
	else
	_portal = NTR_GetTP();
	NTTM_TownMove("stash");
	for(var i = 0 ; i < 10 ; i++){
		_stash = NTC_FindUnit(NTC_UNIT_OBJECT, NTC_UNIT_STASH);
		if(_stash)
		break;
	}
	if(_stash){
		if(NTM_GetCloserInt(_stash)){
			if(NTT_DoInteract(_stash)){
				_items = me.GetItems(NTC_UNIT_CUBE);
				_cube = _items[0];
				if(!_cube){
					NTC_SendMsgToScript("NTBotGame.ntj", "No cube found.");
					return;
				}
				if(NTCU_CheckCubeInventoryInt() > 0){	
					NTCU_OpenCubeInt(_cube)
					if(NTCU_ClearCubeInt() < 1){
						NTC_SendMsgToScript("NTBotGame.ntj", "Cube cannot be emptied.");
						return;
					}
					NTCU_CloseCubeInt();
				}
				NTCU_MoveItemToCubeInt(_cube,_leg)
				NTCU_MoveItemToCubeInt(_cube,_portal)
				NTCU_OpenCubeInt(_cube);
				if(Transmute()){ 
					NTC_PingDelay(NTConfig_CubingDelaysCows);
					NTCU_CloseCubeInt();
					NTC_PingDelay(NTConfig_CubingDelaysCows);
					NTC_CancelMenus();// added this for testing
					NTC_PingDelay(parseInt((NTConfig_CubingDelaysCows / 2), 10));
				}
				else{
					NTC_PingDelay(NTConfig_CubingDelaysCows);
					NTCU_CloseCubeInt();
					NTC_PingDelay(NTConfig_CubingDelaysCows);
					NTC_CancelMenus();// added this for testing
					NTC_PingDelay(parseInt((NTConfig_CubingDelaysCows / 2), 10));
				}
			}
		}
	}
	NTC_PingDelay(NTConfig_CubingDelaysCows);
	if(!NT_TakeCowPortal()){
		NTC_SendMsgToScript("NTBotGame.ntj", "Failed to take Cow Portal.");
		return;
	}
	NTP_DoPrecast(true);
	NTR_ClearRooms();
	NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}

// Internal functions
function NTR_GetTP(){
	var _portals = me.GetItems("tbk");
	if (_portals){
		for (var i = 0; i < _portals.length; i++){
			if (_portals[i].mode == 0 && (_portals[i].itemloc != 0 || NTConfig_Columns[_portals[i].y][_portals[i].x] > 0)){
				return _portals[i];
			}
		}
	}
	return false;
}

function abs(integer){
	if(integer < 0){
		integer = -integer;
	}
	return integer;
}

function NTR_TakeCowPortal(range){
	var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, _NTR_STRING_PORTAL);
	if (_portal){
		var _isClick;
		var _preAreaId = me.areaid;
		do{
			if (GetDistance(me, _portal) < range && _portal.mode == 2){
				for (var i = 0; i < 40; i++){
					if ((i % 10) == 0){
						if(NTM_GetCloserInt(_portal))
						_isClick = NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
					}
					if (_isClick){
						NTC_Delay(200);
						break;
					}
				}
				NTC_PingDelay(1000);
				var j = 0;
				var check = true;
				do{
					if (me.areaid != _preAreaId){
						NTC_PingDelay(500);
						return true;
						check = false;
					}
					j++;
				} while(j < 40 && check == true);
			}
		} while (_portal.GetNext());
	}
	return false;
}

function NTR_ClearPosition(range, pickitem, safelevel, failed){
	var _orgx, _orgy;
	var _spectype = [0x0A, 0x01, 0x01];
	//var _spectype = [0x0A, 0x01];
	var _skiplist;
	var _attackcount = 0;
	var _target;
	var _distance, _mingid, _mindistance;
	var _result;
	var _cowKing;
	var _test;
	if(NTConfig_AttackSkill[1] < 1 || NTConfig_AttackSkill[3] < 1)
	return false;
	switch(arguments.length){
		case 0:
			range = 20;
		case 1:
			pickitem = false;
		case 2:
			safelevel = 0;
		default:
			if((NTConfig_CheckSelfSafe.length < 1) && (NTConfig_CheckMercSafe.length < 1))
			safelevel = 0;
			break;
	}
	_orgx = me.x;
	_orgy = me.y;
	for(var i = 0 ; i < _spectype.length ; i++){
		_skiplist = new Array();
		while(_attackcount < (i+1)*100){
			_mindistance = 100000;
			_target = NTC_FindUnit(NTC_UNIT_MONSTER);
			if(_target){
				do{
					if(_skiplist.indexOf(_target.gid) < 0){
						if(_target.IsAttackable() && (_target.spectype&_spectype[i])){
							if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target)){
								_distance = GetDistance(me, _target);
								if(_distance < _mindistance){
									_mingid = _target.gid;
									_mindistance = _distance;
								}
							}
						}
						else
						_skiplist.push(_target.gid);
					}
				} while(_target.GetNext());
			}
			if(_mindistance < 100000){
				_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid);
				if(_target){
					_cowKing = GetUnit(NTC_UNIT_MONSTER, GetLocaleString(2850));
					if(_cowKing){
						return true;
					}
					_result = NTA_Attack(_target, (_attackcount%30) == 0);
					switch(_result){
						case 1:
							_skiplist.push(_mingid);
							break;
						case 2:
						case 3:
							_attackcount++;
							_sorcattack++;
							break;
						default:
							return false;
					}
				}
			}
			else
				break;
		}
	}
	if(me.classid == NTC_CHAR_CLASS_PALADIN){
		if(_attackcount > 2 && (parseInt(me.hp*100/me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp*100/me.mpmax) < NTConfig_UseRedemptionMP)){
			if(NTC_PutSkill(124, NTC_HAND_RIGHT))
			NTC_PingDelay(1000);
		}
	}
	_cowKing = GetUnit(NTC_UNIT_MONSTER, GetLocaleString(2850));
	if(_cowKing){
		return true;
	}
	if(me.classid == NTC_CHAR_CLASS_NECROMANCER){
		NTA_SkeletonArmy(NTConfig_SkeletonArmy);
		NTA_MageArmy(NTConfig_MageArmy);
		NTA_ReviveArmy(NTConfig_ReviveArmy);
	}
	if(_NTR_CHEST_AND_ROCKS && failed == false){
		_target = NTR_GetChest();
		if(_target){
			do{
				if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range){   
					if(NTC_OpenChest(_target)){
						if(NTConfig_IdInField){
							if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
								NT_FieldID(); 
							} // id in field add
						}
						NTSI_PickItems();
						if(NTConfig_IdInField){
							if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
								NT_FieldID(); 
							} // id in field add
						}
					}
				}
			}while(_target.GetNext());
		}
		_target = NTR_GetObj(174);
		if(_target){
			do{
				if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range){
					if(NTM_MoveTo(me.areaid, _target.x, _target.y)){
						if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target)){
							Delay(200);
							if(NTConfig_IdInField){
								if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
									NT_FieldID(); 
								} // id in field add
							}
							NTSI_PickItems();
							if(NTConfig_IdInField){
								if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
									NT_FieldID(); 
								} // id in field add
							}
						}
					}
				}
			}while(_target.GetNext());
		}
		_target = NTR_GetObj(175);
		if(_target){
			do{
				if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range){
					if(NTM_MoveTo(me.areaid, _target.x, _target.y)){
						if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target)){
							Delay(200);
							if(NTConfig_IdInField){
								if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
									NT_FieldID(); 
								} // id in field add
							}
							NTSI_PickItems();
							if(NTConfig_IdInField){
								if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
									NT_FieldID(); 
								} // id in field add
							}
						}
					}
				}
			}while(_target.GetNext());
		}
		_target = NTR_GetObj(159);
		if(_target){
			do{
				if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range){
					if(NTM_MoveTo(me.areaid, _target.x, _target.y)){
						if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target)){
							Delay(200);
							if(NTConfig_IdInField){
								if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
									NT_FieldID(); 
								} // id in field add
							}
							NTSI_PickItems();
							if(NTConfig_IdInField){
								if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
									NT_FieldID(); 
								} // id in field add
							}
						}
					}
				}
			}while(_target.GetNext());
		}
		_target = NTR_GetObj(155);
		if(_target){
			do{
				if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range){
					if(NTM_MoveTo(me.areaid, _target.x, _target.y)){
						if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target)){
							Delay(200);
							if(NTConfig_IdInField){
								if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
									NT_FieldID(); 
								} // id in field add
							}
							NTSI_PickItems();
							if(NTConfig_IdInField){
								if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
									NT_FieldID(); 
								} // id in field add
							}
						}
					}
				}
			}while(_target.GetNext());
		}
	}
	if(pickitem && _attackcount > 0){
		if(NTConfig_IdInField){
			if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
				NT_FieldID(); 
			} // id in field add
		}
		NTSI_PickItems();
		if(NTConfig_IdInField){
			if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) { 
				NT_FieldID(); 
			} // id in field add
		}
	}						
	switch(safelevel){
		case 1:
			return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
		case 2:
			return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
	}
	return true;
}

function NTR_ClearRooms(){
	var failcount = 0, precount = 0, x, y, offx = 0, offy = 0, goalx = 0, goaly = 0, cowoffx = 0, cowoffy = 0;
	var toggle = true;
	var _cowKing;
	var _faillast;
	x = me.x;
	y = me.y;
	//NTC_PingDelay(5000);
	while (failcount <= _NTR_FAIL_CHECKS){
		if(toggle == true && offx == goalx){
			if(goaly < 0){
				goaly=(0-(goaly-20));
			}else{
				goaly=(0-(goaly+20));
			}
			toggle = false;
		}
		if(toggle == false && offy == goaly){
			if(goaly < 0){
				goalx=(0-(goalx-20));
			}else{
				goalx=(0-(goalx+20));
			}
			toggle = true;
		}
		if(offy > goaly){
			offy-=20;
			y-=20;
		}
		if(offy < goaly){
			offy+=20;
			y+=20;
		}
		if(offx < goalx){
			offx+=20;
			x+=20;
		}
		if(offx > goalx){
			offx-=20;
			x-=20;
		}
		_cowKing = GetUnit(NTC_UNIT_MONSTER, GetLocaleString(2850));
		if(!_cowKing){
			NTR_ClearPosition(20, true, 0, _faillast);
			if(((GetTickCount()-precount)/1000) >= _NTR_PRE_EVERY && _NTR_PRE_EVERY >= 0){
				NTP_DoPrecast();
				precount = GetTickCount();
			}
		}
		if(!NTM_MoveTo(me.areaid, x, y)){
			failcount++;
			_faillast = true;
		}else{
			_faillast = false;
		}
	}
	return true;
}

function NTT_SecondTomeTP(npc, type, amount){
	var _items;
	var _counter = 0;
	if(arguments.length < 1)
	return false;
	if(arguments.length < 2)
	type = 0;
	if(arguments.length < 0)
	amount = 1;
	if(amount == 0)
	return false;
	if(type)
	_items = npc.GetItems("tbk");
	if(_items){
		if(_items.length > 0){
			for(var i = 0 ; i < amount ; i++){
				if(NTT_ShopItem(_items[0], npc, 2))
				_counter++;
			}
		}
	}
	return (_counter > 0);
}

function NTR_GetChest(){
	var _chest;
	_chest = NTC_FindUnit(NTC_UNIT_OBJECT, "chest");
	if(_chest){
		return _chest;
	}
	return null;
}

function NTR_GetObj(num){
	var _chest;
	_chest = NTC_FindUnit(NTC_UNIT_OBJECT, num);
	if(_chest){
		return _chest;
	}
	return null;
}

function NTCW_AlreadyTombs(){
	var portalbook = me.GetItems("tbk");
	if(portalbook && portalbook.length <= 1)
		return true;
	else
		return false;
}

function NT_TakeCowPortal(){
		
	var _prearea = me.areaid
	var _portal = NTC_GetUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
	
	if(_portal){
		do{
			if(_portal.subareaid == 295 || _portal.subareaid == 39){
				while(_portal.mode != 2){
					Delay(500)
				}
				break;
			}
		} while(_portal.GetNext());
		for(var i = 0 ; i < 40 ; i++){
			if(NTM_GetCloserIntS(_portal)){
				NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
			}
			if(me.areaid != _prearea){
				break;
			}
		}
	}
	return (me.areaid == 39);		
}

// need to make it check for an already open cow portal before getting leg
// need to add the 2nd config option for id field in
// add a quest check into cow script if king has been killed then message and skip
// ^^^ pretty sure it is me.GetQuest(4, 10) for cow king dead
2. Was ich ändern möchte:

Problem:
Leader startet ein neues Spiel und hat WirretsLeg sowie ein Buch des Stadtportals noch im Horadrim Würfel. Er versucht in diesem neuen Spiel in Akt 5 das CowPortal zu öffnen, da er dort gestartet ist (etwas konfuses Szenario, ich hab es jedoch beobachtet). Die Folge: Nachfolgende Runs werden durchweg ohne Kuhlevel durchgeführt, da sich der Fehler Spiel für Spiel wiederholt.

Lösungsansätze:
a) Irgendwo wird dem Leader gesagt, dass er das CowPortal nur in Akt 1 aufmachen darf/kann.
b) Er wirft das Bein / das Buch des Stadtportals weg, also leert den Würfel und macht sich erneut auf den Weg nach Tristram.

Umsetzung:
Da fehlen mir die notwendigen Kenntnisse . Im Skript steht ja ziemlich am Anfang:
Code:
if (_leg)
		break;
	}
	//Checks If you already have the leg
	_items = me.GetItems();
jedoch weiß ich nicht, was ich hinzufügen/abändern muss.

Ich bevorzuge Variante b, würde mich aber auch mit Varinate a zufrieden geben. Grund: LeechFighter joinen das CowPortal nach einem definierten Delay. In Variante a wäre das CowPortal früher/schneller auf und der Leader würde folglich eine längere Zeit allein im Kuhlevel arbeiten.

Als weitere Information füge ich an, dass ich das Skript derzeit mit dem D2NT Etal nutze, andere Versionen des D2NT laufen bei mir momentan nicht rund .

Falls das kein großer Aufwand ist und jemand Lust hat, eine der Lösungsideen in das Skript zu integrieren, wäre ich ihm/ihr sehr dankbar. Zudem hoffe ich, dass das Unterforum "Diablo 2 Programming" die richtige Wahl war.

Besten Dank im Voraus.
Abfahrt is offline  
Old 11/13/2011, 23:36   #2
 
elite*gold: 0
Join Date: Mar 2010
Posts: 539
Received Thanks: 418
Eine ganz schnelle Lösung für a) wäre in Zeile 22 folgendes zu schreiben:
Code:
	if(!NTTM_CheckAct([B][COLOR="Red"]1[/COLOR][/B])){
Damit würde noch überprüft, ob der Char in Akt 1 ist, ist dem nicht so, wechselt er nach Akt 1.

Variante b) wäre ein bisschen viel mehr Aufwand...
TheCrazy11 is offline  
Thanks
2 Users
Old 11/18/2011, 11:01   #3
 
elite*gold: 0
Join Date: May 2011
Posts: 11
Received Thanks: 5
Quote:
Originally Posted by TheCrazy11 View Post
Eine ganz schnelle Lösung für a) wäre in Zeile 22 folgendes zu schreiben:
Code:
	if(!NTTM_CheckAct([B][COLOR="Red"]1[/COLOR][/B])){
Damit würde noch überprüft, ob der Char in Akt 1 ist, ist dem nicht so, wechselt er nach Akt 1.

Variante b) wäre ein bisschen viel mehr Aufwand...
Vielen Dank TheCrazy11,

ich konnte mein oben beschriebenes Problem seither nicht mehr feststellen .

Nun habe ich folgendes Problem:

Einer der Arbeiter hat den CowKing erwischt. Folge: Leader und LeechFigher können das CowPortal nicht mehr öffnen. Mein dritter Arbeiter war zu dem Zeitpunkt nicht im Cowlevel und ist somit noch fähig, es zu öffnen.

Ich poste hier eine Lösung für das Problem, falls noch Andere das gleiche feststellen mussten:

Mein Lösungsansatz ist, dass derjenige, der das CowPortal öffnet, nicht selbst im Cowlevel arbeitet (in meinem Fall jetzt der 3. Arbeiter). Somit kann er es immer öffnen, unabhängig davon, ob der CowKing gelegt wurde, oder nicht.

Dazu habe ich in der NTCow.ntj (Skript siehe oben) die Zeilen 249 und 250 vertauscht.

Alt:
Code:
}
	NTP_DoPrecast(true);
	NTR_ClearRooms();
        NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}
Neu:
Code:
}
	NTP_DoPrecast(true);
	NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
	NTR_ClearRooms();
}
Folge: Der Arbeiter öffnet das CowPortal, macht nen Precast, öffnet ein TP, kehrt in die Stadt zurück und fährt mit dem nächsten Skript fort. In der Stadt wieder angekommen brauch er zwar ca. 3-4 Sekunden, um sich zu sammeln und mit dem nächsten fortzufahren, dennoch funktioniert es.

Es wäre nett, wenn jemand mit Kenntnissen meine Änderung kurz kommentiert/kritisiert/befürwortet.

MfG
Abfahrt is offline  
Old 11/18/2011, 12:06   #4
 
elite*gold: 0
Join Date: Mar 2010
Posts: 539
Received Thanks: 418
Funktioniert deine Lösung mit allen 3 Chars?
Oder hast du dafür ein neues Script gemacht?

So, dann zu einer schöneren Lösung, hier erstmal die Frage:
Also soll dein 3. Bot (Arbeiter klingt so nicht passend... ) Nur das Cow öffnen und dann gar nicht das Cow joinen, sondern selbst noch andere Scripte abarbeiten?

Das kann man über Variablen lösen, die man dem Script über die Charconfig mitgibt z.B. eine Variable mit Namen NTJoinCow:
Code:
NTJoinCow = true;	// Öffnet und joint das Cow
NTJoinCow = false;	// Öffnet das Cow und macht mit dem nächsten Script weiter
Wenn ich die Frage richtig verstanden habe, ist es nur mehr eine "Arbeit" von 5 min, bis das Script auf die Variable angepasst ist.

EDIT: Gib doch auch bitte die Zeile in der Charconfig an, mit der du das Cow aufrufst inkl. aller Variablen!
TheCrazy11 is offline  
Thanks
2 Users
Old 11/18/2011, 12:42   #5
 
elite*gold: 0
Join Date: May 2011
Posts: 11
Received Thanks: 5
Quote:
Originally Posted by TheCrazy11 View Post
Funktioniert deine Lösung mit allen 3 Chars?
Oder hast du dafür ein neues Script gemacht?

So, dann zu einer schöneren Lösung, hier erstmal die Frage:
Also soll dein 3. Bot (Arbeiter klingt so nicht passend... ) Nur das Cow öffnen und dann gar nicht das Cow joinen, sondern selbst noch andere Scripte abarbeiten?

Das kann man über Variablen lösen, die man dem Script über die Charconfig mitgibt z.B. eine Variable mit Namen NTJoinCow:
Code:
NTJoinCow = true;	// Öffnet und joint das Cow
NTJoinCow = false;	// Öffnet das Cow und macht mit dem nächsten Script weiter
Wenn ich die Frage richtig verstanden habe, ist es nur mehr eine "Arbeit" von 5 min, bis das Script auf die Variable angepasst ist.

EDIT: Gib doch auch bitte die Zeile in der Charconfig an, mit der du das Cow aufrufst inkl. aller Variablen!
Also, Szenario:

Leader (mein eben genannter 3. Arbeiter ist jetzt Leader) führt meine abgeänderte NTCow.ntj mit der Zeile in der Charconfig aus:
Code:
NTConfig_Script.push("NTCow.ntj"); 
		NTConfig_KillRakanishuCows = true; 			
		NTConfig_TristExtension = false; 				// Set true to clear Tristram.
		NTConfig_CubingDelaysCows = 800;				// Increase this delay if you are having problems with not taking portals or experiencing the "click bug".
Er erstellt das Cowportal, führt Precast durch, geht zurück in die Stadt und fährt mit den nächsten Skripten fort.

Meine 2 LeechFighter führen das CowLeech Skript (beide Skripte sind im D2NT Etal integriert) unabgeändert mit der Zeile in der Charconfig aus:
Code:
NTConfig_Script.push("NTCowLeech.ntj"); 
		NTConfig_KillRakanishuCows = true; 
		NTConfig_TristExtension = true;
Diese gehen durch das geöffnete Cowportal und säubern die Cowebene. Danach fahren sie mit weiteren Skripten fort.

Das mit den Variablen hört sich sehr interessant an, da der Leader nach dem öffnen des CowPortals etwas spinnt (wie oben beschrieben). Er läuft etwas orientierungslos durch die Stadt und hat auch Probleme, den Wegpunkt anzuklicken (bisher wurde aber noch kein "TakeWaypoint failed" in der Log angezeigt).

Was muss ich wo integrieren, dass ich deine genannten Variablen nutzen kann?

MfG

Edit:
Geniale Lösung im nachfolgenden Post!
Abfahrt is offline  
Old 11/18/2011, 13:02   #6
 
elite*gold: 0
Join Date: Mar 2010
Posts: 539
Received Thanks: 418
Ok, dann musst du folgendes in der NTCow.ntj ändern, ich poste nur den relevanten Bereich (ab Zeile 243):
Code:
	NTC_PingDelay(NTConfig_CubingDelaysCows);
[B]	if(NTConfig_JoinCows) {[/B]
		if(!NT_TakeCowPortal()){
			NTC_SendMsgToScript("NTBotGame.ntj", "Failed to take Cow Portal.");
			return;
		}
		NTP_DoPrecast(true);
		NTR_ClearRooms();
[B]	}[/B]
	NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
In der NTConfig.ntl (Generelle Config, keine Charconfig!):
Code:
var NTConfig_KillRakanishuCows;
var NTConfig_TristExtension;
var NTConfig_CubingDelaysCows;
[B]var NTConfig_JoinCows;[/B]
Und in der Charconfig des Leaders:
Code:
NTConfig_Script.push("NTCow.ntj"); 
		NTConfig_KillRakanishuCows = true; 			
		NTConfig_TristExtension = false; 	// Set true to clear Tristram.
		NTConfig_CubingDelaysCows = 800;	// Increase this delay if you are having problems with not taking portals or experiencing the "click bug".
		[B]NTConfig_JoinCows = false;		// true = join & clear cow, false = only open cow portal[/B]
Du musst die fett markierten Sachen einfügen, dann sollte es passen!
TheCrazy11 is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
Frage zu Skript!
05/23/2011 - AutoIt - 9 Replies
HI ich hab ein problem mit einem script und zwar habe ich mir ein programm was ein fadenkreuz anzeigt jedoch brauch ich hilfe weil ich nicht weiß wie ich die koordinaten des fadenkreuzes verstellen soll !!!!! HotKeySet("{F5}", "_Run") HotKeySet("{F7}", "_pause") HotKeySet("{F6}", "_exit") $color1=0x0000FF ;gelb = 0x00F0F0 ; rot = 0x0000FF ; grün = 0x00FF00 ; blau = 0xFF0000 ; weiß = =0xFFFFFF ; lila=0xAC00A9 TrayTip("Hotkeys:", "F5 Start; F6 Ende ;)", 5) _pause() Func _Run()
[FRage]skript
10/27/2010 - AutoIt - 5 Replies
was ist daran falsch? es geht nicht sollte es für mom machen xD #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 283, 314, 283, 171) $Pic1 = GUICtrlCreatePic(@ScriptDir &"\datein\bilder\uhr.jpg", -8, 0, 289, 313, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
MT2GS CMS Skript frage
09/15/2010 - Metin2 Private Server - 4 Replies
Hi habe vor kurzem über den BUG im MTGS Script erfahren der auch auf meinem server genutzt wird. Und deswegen habe ich eine frage Also wenn jemand sich mit meinem acc auf der hp einloggt kann er irgendwie an meine sicherheits frage ran das er meine daten verändern kann? Oder kann er nur auf den acc zugreifen und daten zu verändern?ß Wenn man die daten änderbar sind könnte mir jemand ein tut machen oder so wie man die daten dann ändert?
HP Skript+Regi Skript+Geiles Design
09/04/2010 - Metin2 Private Server - 18 Replies
Hey,Leutz! Wollte ein neues HP Skript Publik machen das über Xampp läuft. Es hat ein cooles Design und es ist ein Regi-Skript beigefügt! Screen: http://s10.directupload.net/images/100425/temp/zr m5nykf.png Natürlich kann alles geändert werden,auch Hintergrund und Logo! Ihr benötigt Xampp! Xampp Download:http://www.chip.de/downloads/c1_downloads _hs_getfile_v1_22023282.html?t=1272220567&v=36 00& So wenn ihr das installiert habt,ladet ihr euch meine Website runter!Ist im Anhang.
[FRAGE]Psc auszahl pw änder Skript?
07/08/2010 - Metin2 Private Server - 11 Replies
wollte mal fragen ob jemand soetwas hatt oder mir ein link für geben könnte damit ich dass auf ne HP machen kann oder so änlich



All times are GMT +2. The time now is 13:27.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.