㈠ wow插件代码问题

修改种族
改种族为XX .race XX
比如改人回类就答 .race 1
1 -- Human
2 -- Orc
3 -- Dwarf
4 -- Night Elf
5 -- Undead
6 -- Tauren
7 -- Gnome
8 -- Troll
9 -- Goblin
10 -- Blood Elf
11 -- Draenie
22 -- Worgen
24 -- Pandaren

㈡ phonegap 什么插件能打电话

最近采用phonegap做一个APP,需要在应用内实现拨打电话,通话结束後能反馈通话相关状态,查看了一番phonegap官方文档,似乎没有跟电话相关的api,在互联网上也大概搜了一下,好像没找到相关的内容。其实html5是支持直接在网页上拨打电话的,只要加入如下html代码即可:
[html] view plain
打电话<a href="tel:10086" >移动客服</a>
发短信<a href="sms:10086" >发短信</a>

但这中方式只能实现拨打电话和发送短信,不能反馈结果,比如我想在应用能实现拨打电话,通话结束後自动保存通话的电话号码、通话时间、时长等,默认的html功能就不能满足了。
phonegap官方不提供的功能,我们只有自己通过开发插件了实现了
下面我们通过代码来简单介绍下phonegap插件开发步骤:
一、定义JS插件API
[javascript] view plain
var Phone = function() {
};
Phone.prototype.call = function (successCallback, failureCallback,number) {
cordova.exec(successCallback, failureCallback, "Phone", "call", [number]);
};
window.Phone = new Phone();

上面的代码我们定义了一个Phone插件,插件有一个call API,我们传入
[javascript] view plain
successCallback
failureCallback
分别做为电话拨打成功和失败的回调函数
传入
[javascript] view plain
number
做为电话号码
在方法裏边调用
phonegap的cordova.exec()
[javascript] view plain
cordova.exec(successCallback, failureCallback, "Phone", "call", [number]);

就是在这个方法裏将执行到native端的功能调用
最後我们new一个Phone对象,把他附件到window对象上,方便以後调用。
这样,插件的JS代码完成。
二、native端代码(以android平台为例)
先直接上代码
[java] view plain
package com.juhuibao.PhoneGapPlugin;
import java.util.Date;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.CallLog.Calls;
import android.telephony.PhoneNumberUtils;
public class Phone extends CordovaPlugin {
private static final int PHONE_CALL = 0; // 拨打电话
private static final int PHONE_ABORT = 1; // 挂断电话
private Date start_time;
private CallbackContext callbackContext;
private String phonenumber;
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
try{
this.callbackContext = callbackContext;
if ("call".equals(action)) {
this.phonenumber=args.getString(0);
this.call(args.getString(0),callbackContext);
return true;
}
if ("abort".equals(action)) {
this.abort(callbackContext);
return true;
}
return false;
}
catch(Exception e){
callbackContext.error(e.getMessage());
}
return false;
}
//拨打电话
private void call(String phonenumber, CallbackContext callbackContext) {
if (phonenumber != null && phonenumber.length() > 0) {
if(PhoneNumberUtils.isGlobalPhoneNumber(phonenumber)){
Intent i = new Intent();
i.setAction(Intent.ACTION_CALL);
i.setData(Uri.parse("tel:"+phonenumber));
start_time=new Date();
this.cordova.startActivityForResult(this, i,PHONE_CALL);
}
else{
callbackContext.error(phonenumber+"不是有效的电话号码。");
}
} else {
callbackContext.error("电话号码不能为空.");
}
}
//中断电话
private void abort(CallbackContext callbackContext) {
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Date end_time=new Date();
if (resultCode == Activity.RESULT_OK) {
if (requestCode == PHONE_CALL) {
this.callbackContext.error("未知状态");
}
}
else if (resultCode == Activity.RESULT_CANCELED) {
try{
if (requestCode == PHONE_CALL) {
long ration=GetLastCallDuration();
PhoneResult result=new PhoneResult();
result.setNumber(Phone.this.phonenumber);
result.setStartTime(Phone.this.start_time);
result.setEndTime(end_time);
result.setDuration(ration);
this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result.toJSONObject()));
}
}
catch(Exception e){
this.callbackContext.error(e.getMessage());
}
}
else {
this.callbackContext.error("其他错误!");
}
}
long delayTime=0;
long timeOut=2000;
long GetLastCallDuration() throws InterruptedException{
Activity activity = this.cordova.getActivity();
Cursor cursor = activity.getContentResolver().query(Calls.CONTENT_URI,
new String[] {Calls.NUMBER,Calls.DATE, Calls.DURATION, Calls.TYPE, Calls.DATE },
"number=?and type=?",
new String[]{this.phonenumber,"2"},
Calls.DEFAULT_SORT_ORDER);
activity.startManagingCursor(cursor);
boolean hasRecord = cursor.moveToFirst();
if (hasRecord) {
long endTime=cursor.getLong(cursor.getColumnIndex(Calls.DATE));
Date date = new Date(endTime);
long ration = cursor.getLong(cursor.getColumnIndex(Calls.DURATION));
long dif=this.start_time.getTime()-date.getTime();
long second=dif/1000;
if(second<2&&second>-2){
return ration;
}else{
if(delayTime>=timeOut){
return 0;
}
Thread.sleep(200);
delayTime+=200;
return GetLastCallDuration();
}
}else{
if(delayTime>=timeOut){
return 0;
}
Thread.sleep(200);
delayTime+=200;
return GetLastCallDuration();
}
}
}
然後调用具体实现拨打电话功能的方法call方法,在call方法内我们首先判断电话号码合法性,不合法直接调用callbackContext.error("不是有效的电话号码。"),这个方法将触发JS端的error回调函数执行,并传入一个字符串参数,比如以上的failureCallback
如果电话号码合法则弹出呼叫界面,如下代码
[java] view plain
if(PhoneNumberUtils.isGlobalPhoneNumber(phonenumber)){
Intent i = new Intent();
i.setAction(Intent.ACTION_CALL);
i.setData(Uri.parse("tel:"+phonenumber));
start_time=new Date();
this.cordova.startActivityForResult(this, i,PHONE_CALL);
}
else{
callbackContext.error(phonenumber+"不是有效的电话号码。");
}

在代码中我们通过变量start_time记录开始时间,然後使用this.cordova.startActivityForResult(this, i,PHONE_CALL);启动Activity。
在终止拨号或挂断电话时将执行onActivityResult方法,我们将在此方法内实现通话状态信息的反馈。主要看一下这段代码
[java] view plain
else if (resultCode == Activity.RESULT_CANCELED) {
try{
if (requestCode == PHONE_CALL) {
long ration=GetLastCallDuration();
PhoneResult result=new PhoneResult();
result.setNumber(Phone.this.phonenumber);
result.setStartTime(Phone.this.start_time);
result.setEndTime(end_time);
result.setDuration(ration);
this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result.toJSONObject()));
}
}
catch(Exception e){
this.callbackContext.error(e.getMessage());
}
}
不管电话有没有接通,resultCode总是等於Activity.RESULT_CANCELED。
我们通过GetLastCallDuration()方法获得通话时长,原理就是读取通话记录裏边的ration字段,由於通话刚结束时通话记录可能还没出现记录,所以我们要反复调用该方法,直到有记录或到超时时间为止。
取得了时长我们通过this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result.toJSONObject()));把结果反馈给JS端。
附 PhoneResult.java
[java] view plain
package com.juhuibao.PhoneGapPlugin;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.json.JSONException;
import org.json.JSONObject;
public class PhoneResult {
private String number = "";
private Date startTime;
private Date endTime;;
private long ration = 0;
public JSONObject toJSONObject() throws JSONException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:S");
return new JSONObject(
"{number:" + JSONObject.quote(number) +
",startTime:" + JSONObject.quote(sdf.format(startTime)) +
",endTime:" + JSONObject.quote(sdf.format(endTime)) +
",ration:" + ration + "}");
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public long getDuration() {
return ration;
}
public void setDuration(long ration) {
this.ration = ration;
}
}

这样native端的代码完成。
三、客户端调用
[javascript] view plain
window.Phone.call(function (obj) { alert(JSON.stringify(obj));
}, function (err) { alert(err); }, "13401100000");
四、配置插件
在config.xml文件中注册插件
[html] view plain
<plugin name="Phone" value="com.juhuibao.PhoneGapPlugin.Phone"/>

在AndroidManifest.xml文件中增加权限
[html] view plain
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

㈢ 求魔兽世界的一个插件代码

修改种族
改种族为XX .race XX
比如改人类就 .race 1
1 -- Human
2 -- Orc
3 -- Dwarf
4 -- Night Elf
5 -- Undead
6 -- Tauren
7 -- Gnome
8 -- Troll
9 -- Goblin
10 -- Blood Elf
11 -- Draenie
22 -- Worgen
24 -- Pandaren

特有模型修改
.morph xx
取消状态就是
.morph 0
.morph 44538 这个是星界人 打伊拉贡时出现的状态
诺格弗格骷髅 7550

男海盗(美味风蛇) 4617
女海盗(美味风蛇) 4618
男忍者(美味风蛇) 4620
女忍者(美味风蛇) 4619

布灵顿4000给的盛装出席变形效果:
白衬衫女 46716
白衬衫男 46715
黑衬衫男 46726
黑衬衫女 46727

关于如何找到模型id
1.在178网站上搜索你想要变的npc的名字.
比如脑残吼,当然你不能搜索脑残吼,要搜索加尔鲁什.然后选择地区在奥格瑞玛的那个
2.点击如图的那个按钮 转到wowhead

3.等页面加载完毕以后,右键 选择查看页面源代码 然后搜索 displayid
displayid后面的数字就是模型代码了

上面这些都从http://bbs.ngacn.cc/read.php?tid=6319999
这里抄的 你想多研究就点进去看

㈣ 谁能给你们写好的Android开发的打电话和接电话功能的代码或者说下,该怎么样开发这样的一个软件

我有系统2.3电话的源码,你要么

㈤ 网站上一个输入电话号码后系统会自动回拨电话给你的插件叫什么插件,在哪里下载

您发的这个是网络离线宝,不过据他们客服人员说马上下线了,市场上同类产品也有的,也是加一段代码到网站上,有一个号码输入框,访客输入号码点击免费通话,就可以和您通话。

有关回拨电话详细查看:网页链接

㈥ 关于电话插件问题,

这应该是主题的吧 双清一下试试

㈦ 网页点击直接拨打电话的代码用js怎么实现

可以使用以下三种方法:

1、WEB页面JS实现一键拨号的电话拨打功能。

在拨号界面专,显示号码,并提示拨打(支属持大部分的浏览器,但是对QQ浏览器的支持一般)。

㈧ 安卓手机打匿名电话软件程序代码

你要是找代码的话,你直接把软件解了吧。

我在应用宝下载的有信免费电话就回是可以打匿名的。答

要不你就试试,这是个软件很多的平台,

我平时找的东西在这都是有的,更新速度也很棒。

还有很多不错的首发和礼包,我个人很喜欢。

像你这种技术宅,应该可以做到的。

下载一个试试吧,等着你的好消息。

㈨ 手机来电报名,可以读短信息的电话插件

短信听听,类似的不少,用网络手机助手一搜就有

㈩ 我现在有个网站,怎么添加电话咨询的代码到网站里

你去搜下搜狐快站或者siteapp,是能够把PC端的网站转化为手机移动端,提供浏览移动用户浏览的转化平台。
不过前提是你的网站要备案。
里面有电话插件,点击一下就能拨打你设置的电话。就是你所说的功能